aboutsummaryrefslogtreecommitdiff
path: root/src/server/ui.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/ui.go')
-rw-r--r--src/server/ui.go19
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)
}
}