diff options
Diffstat (limited to 'src/server/ui.go')
| -rw-r--r-- | src/server/ui.go | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/src/server/ui.go b/src/server/ui.go index 7d59168..baea769 100644 --- a/src/server/ui.go +++ b/src/server/ui.go @@ -8,6 +8,7 @@ import ( "strings" "gitlab.com/alexkavon/newsstand/src/conf" + "gitlab.com/alexkavon/newsstand/src/sessions" ) type Ui struct { @@ -47,7 +48,7 @@ func (ui *Ui) CompilePages(uipath string) { } } -func (ui *Ui) Render(w http.ResponseWriter, pageName string, data interface{}) { +func (ui *Ui) Render(w http.ResponseWriter, r *http.Request, pageName string, data map[string]any) { templateName := "base" // if the pageName has more than 1 `/` then it specifies the name of a template to target slashCount := strings.Count(pageName, "/") @@ -55,14 +56,20 @@ func (ui *Ui) Render(w http.ResponseWriter, pageName string, data interface{}) { splitName := strings.Split(pageName, "/") templateName = splitName[0] } - - ui.RenderTemplate(w, pageName, templateName, data) + ui.RenderTemplate(w, r, pageName, templateName, data) } -func (ui *Ui) RenderTemplate(w http.ResponseWriter, pageName, templateName string, data interface{}) { +func (ui *Ui) RenderTemplate(w http.ResponseWriter, r *http.Request, pageName, templateName string, data map[string]any) { + d := map[string]any{} + for k, v := range data { + d[k] = v + } + if session := r.Context().Value(sessions.SessionCtxKey("session")); session != nil { + d["session"] = session.(*sessions.Session) + } p := ui.pages[pageName] - err := p.ExecuteTemplate(w, templateName, data) + err := p.ExecuteTemplate(w, templateName, d) if err != nil { - log.Fatal(err) + log.Println(err) } } |
