webui_about.go

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