From 9672085d940830f2e2e6d6f71e0e9900db5284a4 Mon Sep 17 00:00:00 2001 From: wxiaoguang Date: Sat, 15 Jul 2023 16:52:03 +0800 Subject: [PATCH] Fix "Flash" message usage (#25895) Resolve https://github.com/go-gitea/gitea/pull/25820/files#r1264309059 --- modules/web/middleware/flash.go | 22 ++++------------------ routers/web/repo/pull.go | 7 ++----- 2 files changed, 6 insertions(+), 23 deletions(-) diff --git a/modules/web/middleware/flash.go b/modules/web/middleware/flash.go index fa29ddeff..41f3aac27 100644 --- a/modules/web/middleware/flash.go +++ b/modules/web/middleware/flash.go @@ -5,17 +5,6 @@ package middleware import "net/url" -// flashes enumerates all the flash types -const ( - SuccessFlash = "SuccessMsg" - ErrorFlash = "ErrorMsg" - WarnFlash = "WarningMsg" - InfoFlash = "InfoMsg" -) - -// FlashNow FIXME: -var FlashNow bool - // Flash represents a one time data transfer between two requests. type Flash struct { DataStore ContextDataStore @@ -27,15 +16,12 @@ func (f *Flash) set(name, msg string, current ...bool) { if f.Values == nil { f.Values = make(map[string][]string) } - isShow := false - if (len(current) == 0 && FlashNow) || - (len(current) > 0 && current[0]) { - isShow = true - } - - if isShow { + showInCurrentPage := len(current) > 0 && current[0] + if showInCurrentPage { + // assign it to the context data, then the template can use ".Flash.XxxMsg" to render the message f.DataStore.GetData()["Flash"] = f } else { + // the message map will be saved into the cookie and be shown in next response (a new page response which decodes the cookie) f.Set(name, msg) } } diff --git a/routers/web/repo/pull.go b/routers/web/repo/pull.go index 505e1424c..c5f260adf 100644 --- a/routers/web/repo/pull.go +++ b/routers/web/repo/pull.go @@ -175,10 +175,8 @@ func getForkRepository(ctx *context.Context) *repo_model.Repository { } else if len(orgs) > 0 { ctx.Data["ContextUser"] = orgs[0] } else { - msg := ctx.Tr("repo.fork_no_valid_owners") - ctx.Data["Flash"] = ctx.Flash - ctx.Flash.Error(msg) ctx.Data["CanForkRepo"] = false + ctx.Flash.Error(ctx.Tr("repo.fork_no_valid_owners"), true) return nil } @@ -194,8 +192,7 @@ func Fork(ctx *context.Context) { } else { maxCreationLimit := ctx.Doer.MaxCreationLimit() msg := ctx.TrN(maxCreationLimit, "repo.form.reach_limit_of_creation_1", "repo.form.reach_limit_of_creation_n", maxCreationLimit) - ctx.Data["Flash"] = ctx.Flash - ctx.Flash.Error(msg) + ctx.Flash.Error(msg, true) } getForkRepository(ctx)