fix: extract html rendering
All checks were successful
Build Docker Image / Build-Docker-Image (push) Successful in 42s
Build and Push Docker Image / Build-And-Push-Docker-Image (push) Successful in 49s

This commit was merged in pull request #291.
This commit is contained in:
2024-12-04 21:10:25 +01:00
parent 01ceb9eb33
commit 9e8e595258
6 changed files with 138 additions and 145 deletions

47
handler/render.go Normal file
View File

@@ -0,0 +1,47 @@
package handler
import (
"me-fit/service"
"me-fit/template"
"me-fit/template/auth"
"me-fit/types"
"me-fit/utils"
"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 {
utils.LogError("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("")
}
}