From 05a32bda78911772cb8b09f37bacbcf851a4ddba Mon Sep 17 00:00:00 2001 From: Alan Pearce Date: Mon, 10 Mar 2025 14:05:17 +0100 Subject: feat: default to combined search on root path --- internal/components/homepage.templ | 10 ---------- internal/components/page.templ | 7 ++++--- internal/components/search.templ | 4 ++++ internal/server/mux.go | 23 +++++++---------------- 4 files changed, 15 insertions(+), 29 deletions(-) delete mode 100644 internal/components/homepage.templ diff --git a/internal/components/homepage.templ b/internal/components/homepage.templ deleted file mode 100644 index 1cc2b9e..0000000 --- a/internal/components/homepage.templ +++ /dev/null @@ -1,10 +0,0 @@ -package components - -templ Homepage(tdata TemplateData) { - @Page(tdata) { -

- Search Nix Packages and options from NixOS, Darwin and Home-Manager -

- Source code - } -} diff --git a/internal/components/page.templ b/internal/components/page.templ index 127d1ba..edab0f4 100644 --- a/internal/components/page.templ +++ b/internal/components/page.templ @@ -29,7 +29,7 @@ templ Page(tdata TemplateData) { rel="search" type="application/opensearchdescription+xml" title={ "Searchix " + sourceNameAndType(nil) } - href={ string(joinPath("/all", "opensearch.xml")) } + href={ string(joinPath("opensearch.xml")) } /> for _, source := range tdata.Sources { All for _, source := range tdata.Sources { @@ -71,6 +71,7 @@ templ Page(tdata TemplateData) { diff --git a/internal/components/search.templ b/internal/components/search.templ index 0457ff9..bbcf3f4 100644 --- a/internal/components/search.templ +++ b/internal/components/search.templ @@ -23,6 +23,9 @@ templ Search(tdata TemplateData, r ResultData) { templ SearchPage(tdata TemplateData, r ResultData) { @Page(tdata) { +

+ Search Nix packages and options from NixOS, Darwin and Home-Manager +

@script(tdata.Assets.ByPath["/static/search.js"]) @Search(tdata, r)
@@ -36,5 +39,6 @@ templ SearchPage(tdata TemplateData, r ResultData) { Everything should work fine without JavaScript. If that is not the case, report an issue

+ Source code } } diff --git a/internal/server/mux.go b/internal/server/mux.go index 9dbcc86..9c69a7e 100644 --- a/internal/server/mux.go +++ b/internal/server/mux.go @@ -71,18 +71,6 @@ func NewMux( top := http.NewServeMux() mux := sentryhttp.NewServeMux() - mux.HandleFunc("/{$}", func(w http.ResponseWriter, r *http.Request) { - indexData := components.TemplateData{ - ExtraHeadHTML: cfg.Web.ExtraHeadHTML, - Sources: sources, - Assets: frontend.Assets, - } - w.Header().Add("Cache-Control", "max-age=86400") - err := components.Homepage(indexData).Render(r.Context(), w) - if err != nil { - errorHandler(w, r, err.Error(), http.StatusInternalServerError) - } - }) const searchTimeout = 1 * time.Second createSearchHandler := func(importerType config.ImporterType) func(http.ResponseWriter, *http.Request) { @@ -213,10 +201,12 @@ func NewMux( } } - mux.HandleFunc("/all/search", createSearchHandler(config.All)) + mux.HandleFunc("/{$}", createSearchHandler(config.All)) mux.HandleFunc("/options/{source}/search", createSearchHandler(config.Options)) mux.HandleFunc("/packages/{source}/search", createSearchHandler(config.Packages)) + mux.Handle("/all/search", http.RedirectHandler("/", http.StatusFound)) + createSourceIDHandler := func(importerType config.ImporterType) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { source := cfg.Importer.Sources[r.PathValue("source")] @@ -317,18 +307,19 @@ func NewMux( mux.HandleFunc("/options/{source}/opensearch.xml", createOpenSearchXMLHandler(config.Options)) mux.HandleFunc("/packages/{source}/opensearch.xml", createOpenSearchXMLHandler(config.Packages)) - mux.HandleFunc("/all/opensearch.xml", func(w http.ResponseWriter, _ *http.Request) { + mux.Handle("/all/opensearch.xml", http.RedirectHandler("/opensearch.xml", http.StatusFound)) + mux.HandleFunc("/opensearch.xml", func(w http.ResponseWriter, _ *http.Request) { w.Header().Add("Cache-Control", "max-age=604800") w.Header().Set("Content-Type", "application/opensearchdescription+xml") osd := &opensearch.Description{ ShortName: "Searchix Combined", LongName: "Search nix options and packages with Searchix", Description: "Search nix options and packages with Searchix", - SearchForm: cfg.Web.BaseURL.JoinPath("all/search"), + SearchForm: cfg.Web.BaseURL.JoinPath(), URL: opensearch.URL{ Method: "get", Type: "text/html", - Template: cfg.Web.BaseURL.JoinPath("all/search"). + Template: cfg.Web.BaseURL.JoinPath(). AddRawQuery("query", "{searchTerms}"), }, } -- cgit 1.4.1