1package web
 2
 3import (
 4	"html/template"
 5	"net/http"
 6
 7	"github.com/charmbracelet/log/v2"
 8	"github.com/charmbracelet/soft-serve/pkg/backend"
 9	"github.com/charmbracelet/soft-serve/pkg/config"
10)
11
12type AboutData struct {
13	ReadmeHTML template.HTML
14	ActiveTab  string
15	ServerName string
16}
17
18func about(w http.ResponseWriter, r *http.Request) {
19	ctx := r.Context()
20	logger := log.FromContext(ctx)
21	cfg := config.FromContext(ctx)
22	be := backend.FromContext(ctx)
23
24	if be == nil {
25		logger.Debug("backend not found in context")
26		renderInternalServerError(w, r)
27		return
28	}
29
30	readmeHTML, err := getServerReadme(ctx, be)
31	if err != nil {
32		logger.Debug("failed to get server README", "err", err)
33		renderInternalServerError(w, r)
34		return
35	}
36
37	data := AboutData{
38		ReadmeHTML: readmeHTML,
39		ActiveTab:  "about",
40		ServerName: cfg.Name,
41	}
42
43	renderHTML(w, "about.html", data)
44}