0
0
mirror of https://github.com/go-gitea/gitea.git synced 2025-07-17 06:42:52 +02:00
This commit is contained in:
Lunny Xiao 2024-12-26 12:38:11 -08:00
parent 1a1fe32256
commit bf15e1878c
No known key found for this signature in database
GPG Key ID: C3B7C91B632F738A
3 changed files with 23 additions and 12 deletions

View File

@ -68,19 +68,14 @@ func Tree(ctx *context.Context) {
defer closer.Close()
refName := gitRepo.UnstableGuessRefByShortName(ref)
var results []*files_service.TreeEntry
if !recursive {
results, err := files_service.GetTreeList(ctx, ctx.Repo.Repository, dir, refName, false)
if err != nil {
ctx.ServerError("GetTreeList", err)
return
}
ctx.JSON(http.StatusOK, results)
return
results, err = files_service.GetTreeList(ctx, ctx.Repo.Repository, dir, refName, false)
} else {
results, err = files_service.GetTreeInformation(ctx, ctx.Repo.Repository, dir, refName)
}
results, err := files_service.GetTreeInformation(ctx, ctx.Repo.Repository, dir, refName)
if err != nil {
ctx.ServerError("GetTreeList", err)
ctx.ServerError("GetTreeInformation", err)
return
}
ctx.JSON(http.StatusOK, results)

View File

@ -8,6 +8,7 @@ import (
"fmt"
"net/url"
"path"
"sort"
"strings"
repo_model "code.gitea.io/gitea/models/repo"
@ -126,7 +127,7 @@ type TreeEntry struct {
Name string `json:"name"`
IsFile bool `json:"isFile"`
Path string `json:"path"`
Children []*TreeEntry `json:"children"`
Children []*TreeEntry `json:"children, omitempty"`
}
/*
@ -253,9 +254,12 @@ func GetTreeList(ctx context.Context, repo *repo_model.Repository, treePath stri
for _, tree := range treeList {
if !tree.IsFile {
tree.Children = mapTree[tree.Path]
sortTreeEntries(tree.Children)
}
}
sortTreeEntries(treeList)
return treeList, nil
}
@ -471,5 +475,17 @@ func GetTreeInformation(ctx context.Context, repo *repo_model.Repository, treePa
Path: path.Join(dir, entry.Name()),
})
}
sortTreeEntries(treeList)
sortTreeEntries(parentEntry.Children)
return treeList, nil
}
// sortTreeEntries list directory first and with alpha sequence
func sortTreeEntries(entries []*TreeEntry) {
sort.Slice(entries, func(i, j int) bool {
if entries[i].IsFile != entries[j].IsFile {
return !entries[i].IsFile
}
return entries[i].Name < entries[j].Name
})
}

View File

@ -36,7 +36,7 @@ async function loadChildren(item, recursive?: boolean) {
if (json instanceof Array) {
return json.map((i) => ({
name: i.name,
isFile: i.type === 'file',
isFile: i.isFile,
htmlUrl: i.html_url,
path: i.path,
}));