diff options
author | HesterG <hestergong@gmail.com> | 2023-07-21 19:20:04 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-07-21 11:20:04 +0000 |
commit | 2f0e79e6393df13930eaa419273d24dc2ef36cfa (patch) | |
tree | 878d19f8055f7f5c5ce114620c05d18cbfb6c79a /modules/context | |
parent | dbbae67f44364eb965f516bfc77ba25dd5242c16 (diff) | |
download | gitea-2f0e79e6393df13930eaa419273d24dc2ef36cfa.tar.gz gitea-2f0e79e6393df13930eaa419273d24dc2ef36cfa.zip |
Use frontend fetch for branch dropdown component (#25719)
- Send request to get branch/tag list, use loading icon when waiting for
response.
- Only fetch when the first time branch/tag list shows.
- For backend, removed assignment to `ctx.Data["Branches"]` and
`ctx.Data["Tags"]` from `context/repo.go` and passed these data wherever
needed.
- Changed some `v-if` to `v-show` and used native `svg` as mentioned in
https://github.com/go-gitea/gitea/pull/25719#issuecomment-1631712757 to
improve perfomance when there are a lot of branches.
- Places Used the dropdown component:
Repo Home Page
<img width="1429" alt="Screen Shot 2023-07-06 at 12 17 51"
src="https://github.com/go-gitea/gitea/assets/17645053/6accc7b6-8d37-4e88-ae1a-bd2b3b927ea0">
Commits Page
<img width="1431" alt="Screen Shot 2023-07-06 at 12 18 34"
src="https://github.com/go-gitea/gitea/assets/17645053/2d0bf306-d1e2-45a8-a784-bc424879f537">
Specific commit -> operations -> cherry-pick
<img width="758" alt="Screen Shot 2023-07-06 at 12 23 28"
src="https://github.com/go-gitea/gitea/assets/17645053/1e557948-3881-4e45-a625-8ef36d45ae2d">
Release Page
<img width="1433" alt="Screen Shot 2023-07-06 at 12 25 05"
src="https://github.com/go-gitea/gitea/assets/17645053/3ec82af1-15a4-4162-a50b-04a9502161bb">
- Demo
https://github.com/go-gitea/gitea/assets/17645053/d45d266b-3eb0-465a-82f9-57f78dc5f9f3
- Note:
UI of dropdown menu could be improved in another PR as it should apply
to more dropdown menus.
Fix #14180
---------
Co-authored-by: silverwind <me@silverwind.io>
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
Diffstat (limited to 'modules/context')
-rw-r--r-- | modules/context/repo.go | 30 |
1 files changed, 9 insertions, 21 deletions
diff --git a/modules/context/repo.go b/modules/context/repo.go index eae71cfb7b..2c67735c93 100644 --- a/modules/context/repo.go +++ b/modules/context/repo.go @@ -660,13 +660,6 @@ func RepoAssignment(ctx *Context) context.CancelFunc { return cancel } - tags, err := repo_model.GetTagNamesByRepoID(ctx, ctx.Repo.Repository.ID) - if err != nil { - ctx.ServerError("GetTagNamesByRepoID", err) - return cancel - } - ctx.Data["Tags"] = tags - branchOpts := git_model.FindBranchOptions{ RepoID: ctx.Repo.Repository.ID, IsDeletedBranch: util.OptionalBoolFalse, @@ -680,7 +673,7 @@ func RepoAssignment(ctx *Context) context.CancelFunc { return cancel } - // non empty repo should have at least 1 branch, so this repository's branches haven't been synced yet + // non-empty repo should have at least 1 branch, so this repository's branches haven't been synced yet if branchesTotal == 0 { // fallback to do a sync immediately branchesTotal, err = repo_module.SyncRepoBranches(ctx, ctx.Repo.Repository.ID, 0) if err != nil { @@ -689,24 +682,19 @@ func RepoAssignment(ctx *Context) context.CancelFunc { } } - // FIXME: use paganation and async loading - branchOpts.ExcludeBranchNames = []string{ctx.Repo.Repository.DefaultBranch} - brs, err := git_model.FindBranchNames(ctx, branchOpts) - if err != nil { - ctx.ServerError("GetBranches", err) - return cancel - } - // always put default branch on the top - ctx.Data["Branches"] = append(branchOpts.ExcludeBranchNames, brs...) ctx.Data["BranchesCount"] = branchesTotal - // If not branch selected, try default one. - // If default branch doesn't exist, fall back to some other branch. + // If no branch is set in the request URL, try to guess a default one. if len(ctx.Repo.BranchName) == 0 { if len(ctx.Repo.Repository.DefaultBranch) > 0 && gitRepo.IsBranchExist(ctx.Repo.Repository.DefaultBranch) { ctx.Repo.BranchName = ctx.Repo.Repository.DefaultBranch - } else if len(brs) > 0 { - ctx.Repo.BranchName = brs[0] + } else { + ctx.Repo.BranchName, _ = gitRepo.GetDefaultBranch() + if ctx.Repo.BranchName == "" { + // If it still can't get a default branch, fall back to default branch from setting. + // Something might be wrong. Either site admin should fix the repo sync or Gitea should fix a potential bug. + ctx.Repo.BranchName = setting.Repository.DefaultBranch + } } ctx.Repo.RefName = ctx.Repo.BranchName } |