package handler import ( "me-fit/log" "me-fit/service" "me-fit/template" "me-fit/template/auth" "me-fit/types" "net/http" "github.com/a-h/templ" ) type Render struct { serverSettings *types.ServerSettings } func NewRender(serverSettings *types.ServerSettings) *Render { return &Render{ serverSettings: serverSettings, } } func (render *Render) Render(r *http.Request, w http.ResponseWriter, comp templ.Component) { err := comp.Render(r.Context(), w) if err != nil { log.Error("Failed to render layout", err) http.Error(w, "Internal Server Error", http.StatusInternalServerError) } } func (render *Render) RenderLayout(r *http.Request, w http.ResponseWriter, slot templ.Component, user *service.User) { userComp := render.getUserComp(user) layout := template.Layout(slot, userComp, render.serverSettings.Environment) render.Render(r, w, layout) } func (render *Render) getUserComp(user *service.User) templ.Component { if user != nil { return auth.UserComp(user.Email) } else { return auth.UserComp("") } }