summaryrefslogtreecommitdiffstats
path: root/routers/web/repo/helper.go
diff options
context:
space:
mode:
Diffstat (limited to 'routers/web/repo/helper.go')
-rw-r--r--routers/web/repo/helper.go44
1 files changed, 44 insertions, 0 deletions
diff --git a/routers/web/repo/helper.go b/routers/web/repo/helper.go
new file mode 100644
index 0000000..5e1e116
--- /dev/null
+++ b/routers/web/repo/helper.go
@@ -0,0 +1,44 @@
+// Copyright 2023 The Gitea Authors. All rights reserved.
+// SPDX-License-Identifier: MIT
+
+package repo
+
+import (
+ "net/url"
+ "sort"
+
+ "code.gitea.io/gitea/models/user"
+ "code.gitea.io/gitea/modules/git"
+ "code.gitea.io/gitea/services/context"
+)
+
+func MakeSelfOnTop(doer *user.User, users []*user.User) []*user.User {
+ if doer != nil {
+ sort.Slice(users, func(i, j int) bool {
+ if users[i].ID == users[j].ID {
+ return false
+ }
+ return users[i].ID == doer.ID // if users[i] is self, put it before others, so less=true
+ })
+ }
+ return users
+}
+
+func HandleGitError(ctx *context.Context, msg string, err error) {
+ if git.IsErrNotExist(err) {
+ refType := ""
+ switch {
+ case ctx.Repo.IsViewBranch:
+ refType = "branch"
+ case ctx.Repo.IsViewTag:
+ refType = "tag"
+ case ctx.Repo.IsViewCommit:
+ refType = "commit"
+ }
+ ctx.Data["NotFoundPrompt"] = ctx.Locale.Tr("repo.tree_path_not_found_"+refType, ctx.Repo.TreePath, url.PathEscape(ctx.Repo.RefName))
+ ctx.Data["NotFoundGoBackURL"] = ctx.Repo.RepoLink + "/src/" + refType + "/" + url.PathEscape(ctx.Repo.RefName)
+ ctx.NotFound(msg, err)
+ } else {
+ ctx.ServerError(msg, err)
+ }
+}