fix: extract html rendering
This commit was merged in pull request #291.
This commit is contained in:
47
handler/render.go
Normal file
47
handler/render.go
Normal 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("")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user