package web

import (
	"html/template"
	"net/http"

	"github.com/charmbracelet/log/v2"
	"github.com/charmbracelet/soft-serve/pkg/backend"
	"github.com/charmbracelet/soft-serve/pkg/config"
)

type AboutData struct {
	BaseData
	ReadmeHTML template.HTML
}

func about(w http.ResponseWriter, r *http.Request) {
	ctx := r.Context()
	logger := log.FromContext(ctx)
	cfg := config.FromContext(ctx)
	be := backend.FromContext(ctx)

	if be == nil {
		logger.Debug("backend not found in context")
		renderInternalServerError(w, r)
		return
	}

	readmeHTML, err := getServerReadme(ctx, be)
	if err != nil {
		logger.Debug("failed to get server README", "err", err)
		renderInternalServerError(w, r)
		return
	}

	data := AboutData{
		BaseData: BaseData{
			ServerName: cfg.Name,
			ActiveTab:  "about",
		},
		ReadmeHTML: readmeHTML,
	}

	renderHTML(w, "about.html", data)
}
