package routes import ( "log/slog" "net/http" "git.codemonkeysoftware.net/b/peachy-go/desktop/components" "git.codemonkeysoftware.net/b/peachy-go/desktop/pages" "github.com/go-chi/chi/v5" "github.com/go-chi/chi/v5/middleware" "github.com/go-chi/httplog/v2" ) /* Create a new chi router, configure it and return it. */ func NewChiRouter(port string) *chi.Mux { r := chi.NewRouter() logger := httplog.NewLogger("app-logger", httplog.Options{ LogLevel: slog.LevelInfo, Concise: true, }) // Use the logger and recoverer middleware. r.Use(httplog.RequestLogger(logger)) r.Use(middleware.Recoverer) /* // ULTRA IMPORTANT : This middleware is used to prevent caching of the pages. // Sometimes, HX requests may be cached by the browser, which may cause unexpected behavior. r.Use(func(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.Header().Set("Cache-Control", "no-store") next.ServeHTTP(w, r) }) }) */ r.Handle("/static/*", http.StripPrefix("/static/", http.FileServer(http.Dir("static")))) r.Get("/splash", func(w http.ResponseWriter, r *http.Request) { slog.Info("we splashin") HXRender(w, r, pages.Splash) }) r.Get("/", func(w http.ResponseWriter, r *http.Request) { slog.Info("we homies") HXRender(w, r, pages.HomePage) }) r.Get("/hello", func(w http.ResponseWriter, r *http.Request) { HXRender(w, r, components.HelloWorld) }) go http.ListenAndServe(":"+port, r) return r }