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	BaseData
14	ReadmeHTML template.HTML
15}
16
17func about(w http.ResponseWriter, r *http.Request) {
18	ctx := r.Context()
19	logger := log.FromContext(ctx)
20	cfg := config.FromContext(ctx)
21	be := backend.FromContext(ctx)
22
23	if be == nil {
24		logger.Debug("backend not found in context")
25		renderInternalServerError(w, r)
26		return
27	}
28
29	readmeHTML, err := getServerReadme(ctx, be)
30	if err != nil {
31		logger.Debug("failed to get server README", "err", err)
32		renderInternalServerError(w, r)
33		return
34	}
35
36	data := AboutData{
37		BaseData: BaseData{
38			ServerName: cfg.Name,
39			ActiveTab:  "about",
40			Title:      "About | " + cfg.Name,
41		},
42		ReadmeHTML: readmeHTML,
43	}
44
45	renderHTML(w, "about.html", data)
46}