package handler import ( "me-fit/service" "me-fit/template" "me-fit/utils" "net/http" "github.com/a-h/templ" ) type IndexHandler interface { Handle(router *http.ServeMux) } type IndexHandlerImpl struct { service service.AuthService render *Render } func NewIndexHandler(service service.AuthService, render *Render) IndexHandler { return IndexHandlerImpl{ service: service, render: render, } } func (handler IndexHandlerImpl) Handle(router *http.ServeMux) { router.Handle("/", handler.handleIndexAnd404()) } func (handler IndexHandlerImpl) handleIndexAnd404() http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { user, _ := handler.service.GetUserFromSessionId(utils.GetSessionID(r)) var comp templ.Component if r.URL.Path != "/" { comp = template.NotFound() w.WriteHeader(http.StatusNotFound) } else { comp = template.Index() } handler.render.RenderLayout(r, w, comp, user) } }