package handler import ( "me-fit/handler/middleware" "me-fit/service" "me-fit/template" "net/http" "github.com/a-h/templ" ) type Index interface { Handle(router *http.ServeMux) } type IndexImpl struct { service service.Auth render *Render } func NewIndex(service service.Auth, render *Render) Index { return IndexImpl{ service: service, render: render, } } func (handler IndexImpl) Handle(router *http.ServeMux) { router.Handle("/", handler.handleIndexAnd404()) } func (handler IndexImpl) handleIndexAnd404() http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { user := middleware.GetUser(r) var comp templ.Component var status int if r.URL.Path != "/" { comp = template.NotFound() status = http.StatusNotFound } else { comp = template.Index() status = http.StatusOK } handler.render.RenderLayoutWithStatus(r, w, comp, user, status) } }