all repos — searchix @ 342121cc03e7ecb8ce68fd445dbf4a60fddf7a52

Search engine for NixOS, nix-darwin, home-manager and NUR users

feat: Handle returning to scoped importer search page

Kaya
commit

342121cc03e7ecb8ce68fd445dbf4a60fddf7a52

parent

18eab011a18b9fd42d797635d47bec93fbf212b8

1 file changed, 23 insertions(+), 2 deletions(-)

changed files
M internal/server/source.gointernal/server/source.go
@@ -34,6 +34,26 @@ func (h *SourceHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
h.mux.ServeHTTP(w, r) } +func (h *SourceHandler) searchSource(r *http.Request) config.Source { + if r.URL.Query().Has("scoped") { + return h.source + } + + return config.Source{Importer: config.All} +} + +func (h *SourceHandler) closeURL(r *http.Request) string { + q := r.URL.Query() + scoped := q.Has("scoped") + q.Del("scoped") + + if scoped { + return "/" + h.source.Importer.String() + "/" + h.source.Key + "/search?" + q.Encode() + } + + return "/?" + q.Encode() +} + func (h *SourceHandler) Search(w http.ResponseWriter, r *http.Request) { h.global.Search(h.source, w, r) }
@@ -78,11 +98,12 @@ if r.Header.Get("Fetch") == "true" {
w.Header().Add("Content-Type", "text/html; charset=utf-8") w.Header().Add("Title", h.getTitle(doc)) baseErr = components.Detail(doc).Render(w) - } else if searchResult, _, searchErr := h.global.ExecuteSearch(h.source, r); searchErr == nil && searchResult != nil { + } else if searchResult, _, searchErr := h.global.ExecuteSearch(h.searchSource(r), r); searchErr == nil && + searchResult != nil { searchResult.Title = h.getTitle(doc) searchResult.Description = components.MetaDescription(doc) searchResult.DetailContent = components.Detail(doc) - searchResult.SearchURL = searchResult.SearchNav.URL.String() + searchResult.SearchURL = h.closeURL(r) baseErr = components.ResultsPage(*searchResult).Render(w) } else { tdata := components.TemplateData{