From a52ea5d09ce959cd73dfcc1cf2ad0ec1783d023c Mon Sep 17 00:00:00 2001 From: Mihai Parparita Date: Sat, 29 Nov 2014 22:15:09 -0800 Subject: [PATCH] Reduce code duplication for rendering of flash messages. --- app/app.go | 5 ++++- app/retrogit.go | 20 +++++++++----------- app/templates/base/page.html | 4 ++++ app/templates/index.html | 4 ---- app/templates/settings.html | 4 ---- 5 files changed, 17 insertions(+), 20 deletions(-) diff --git a/app/app.go b/app/app.go index da61cc7..bc5f325 100644 --- a/app/app.go +++ b/app/app.go @@ -204,7 +204,10 @@ type Template struct { *template.Template } -func (t *Template) Render(w io.Writer, data interface{}) *AppError { +func (t *Template) Render(w io.Writer, data map[string]interface{}, state ...*AppSignedInState) *AppError { + if len(state) > 0 { + data["Flashes"] = state[0].Flashes() + } err := t.Execute(w, data) if err != nil { return &AppError{ diff --git a/app/retrogit.go b/app/retrogit.go index 822c818..a5fd037 100644 --- a/app/retrogit.go +++ b/app/retrogit.go @@ -144,17 +144,18 @@ func indexHandler(w http.ResponseWriter, r *http.Request) *AppError { "RepositoryCount": repositoryCount, "EmailAddress": emailAddress, } - flashes := session.Flashes() - if len(flashes) > 0 { - session.Save(r, w) - } var data = map[string]interface{}{ "User": user, "SettingsSummary": settingsSummary, "DetectTimezone": !account.HasTimezoneSet, - "Flashes": flashes, } - return templates["index"].Render(w, data) + return templates["index"].Render(w, data, &AppSignedInState{ + Account: account, + GitHubClient: githubClient, + session: session, + responseWriter: w, + request: r, + }) } func signInHandler(w http.ResponseWriter, r *http.Request) *AppError { @@ -196,7 +197,7 @@ func viewDigestHandler(w http.ResponseWriter, r *http.Request, state *AppSignedI var data = map[string]interface{}{ "Digest": digest, } - return templates["digest-page"].Render(w, data) + return templates["digest-page"].Render(w, data, state) } func sendDigestHandler(w http.ResponseWriter, r *http.Request, state *AppSignedInState) *AppError { @@ -360,8 +361,6 @@ func settingsHandler(w http.ResponseWriter, r *http.Request, state *AppSignedInS return GitHubFetchError(err, "emails") } - flashes := state.Flashes() - var data = map[string]interface{}{ "Account": state.Account, "User": user, @@ -369,9 +368,8 @@ func settingsHandler(w http.ResponseWriter, r *http.Request, state *AppSignedInS "Repos": repos, "EmailAddresses": emailAddresses, "AccountEmailAddress": accountEmailAddress, - "Flashes": flashes, } - return templates["settings"].Render(w, data) + return templates["settings"].Render(w, data, state) } func saveSettingsHandler(w http.ResponseWriter, r *http.Request, state *AppSignedInState) *AppError { diff --git a/app/templates/base/page.html b/app/templates/base/page.html index 08ef2b1..0e3389a 100644 --- a/app/templates/base/page.html +++ b/app/templates/base/page.html @@ -17,6 +17,10 @@

{{template "title" .}}

+ {{range .Flashes}} + {{template "flash" .}} + {{end}} + {{template "body" .}}
diff --git a/app/templates/index.html b/app/templates/index.html index 61ed5ff..1672ffe 100644 --- a/app/templates/index.html +++ b/app/templates/index.html @@ -2,10 +2,6 @@ {{define "body"}} -{{range .Flashes}} - {{template "flash" .}} -{{end}} -
You're signed in as {{template "user" .User}} diff --git a/app/templates/settings.html b/app/templates/settings.html index e039442..a68ef4b 100644 --- a/app/templates/settings.html +++ b/app/templates/settings.html @@ -15,10 +15,6 @@ -{{range .Flashes}} - {{template "flash" .}} -{{end}} -