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 { settings *types.Settings } func NewRender(settings *types.Settings) *Render { return &Render{ settings: settings, } } func (render *Render) Render(r *http.Request, w http.ResponseWriter, comp templ.Component) { w.Header().Set("Content-Type", "text/html") err := comp.Render(r.Context(), w) if err != nil { log.Error("Failed to render layout: %v", 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.settings.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("") } }