aboutsummaryrefslogtreecommitdiffstats
path: root/routers/web/repo/webgit.go
diff options
context:
space:
mode:
Diffstat (limited to 'routers/web/repo/webgit.go')
-rw-r--r--routers/web/repo/webgit.go40
1 files changed, 40 insertions, 0 deletions
diff --git a/routers/web/repo/webgit.go b/routers/web/repo/webgit.go
new file mode 100644
index 0000000000..5f390197e7
--- /dev/null
+++ b/routers/web/repo/webgit.go
@@ -0,0 +1,40 @@
+// Copyright 2025 The Gitea Authors. All rights reserved.
+// SPDX-License-Identifier: MIT
+
+package repo
+
+import (
+ user_model "code.gitea.io/gitea/models/user"
+ "code.gitea.io/gitea/modules/log"
+ "code.gitea.io/gitea/modules/setting"
+ "code.gitea.io/gitea/modules/util"
+ "code.gitea.io/gitea/services/context"
+ files_service "code.gitea.io/gitea/services/repository/files"
+)
+
+func WebGitOperationCommonData(ctx *context.Context) {
+ // TODO: more places like "wiki page" and "merging a pull request or creating an auto merge merging task"
+ emails, err := user_model.GetActivatedEmailAddresses(ctx, ctx.Doer.ID)
+ if err != nil {
+ log.Error("WebGitOperationCommonData: GetActivatedEmailAddresses: %v", err)
+ }
+ if ctx.Doer.KeepEmailPrivate {
+ emails = append([]string{ctx.Doer.GetPlaceholderEmail()}, emails...)
+ }
+ ctx.Data["CommitCandidateEmails"] = emails
+ ctx.Data["CommitDefaultEmail"] = ctx.Doer.GetEmail()
+}
+
+func WebGitOperationGetCommitChosenEmailIdentity(ctx *context.Context, email string) (_ *files_service.IdentityOptions, valid bool) {
+ if ctx.Data["CommitCandidateEmails"] == nil {
+ setting.PanicInDevOrTesting("no CommitCandidateEmails in context data")
+ }
+ emails, _ := ctx.Data["CommitCandidateEmails"].([]string)
+ if email == "" {
+ return nil, true
+ }
+ if util.SliceContainsString(emails, email, true) {
+ return &files_service.IdentityOptions{GitUserEmail: email}, true
+ }
+ return nil, false
+}