iproved favicon caching / ID system

This commit is contained in:
partisan 2025-05-07 12:54:51 +02:00
parent 4a0738745a
commit 255acb360f
2 changed files with 20 additions and 23 deletions

View file

@ -40,6 +40,7 @@ type SearchEngine struct {
type LinkParts struct {
Domain template.HTML
Path template.HTML
RootURL string // used by getFaviconProxyURL()
}
// Helper function to render templates without elapsed time measurement
@ -131,11 +132,10 @@ func FormatElapsedTime(elapsed time.Duration) string {
}
return fmt.Sprintf("%.2f %s", elapsed.Seconds(), Translate("seconds"))
}
func FormatURLParts(rawURL string) (domain, path string) {
func FormatURLParts(rawURL string) (domain, path, rootURL string) {
parsed, err := url.Parse(rawURL)
if err != nil {
return rawURL, ""
if err != nil || parsed.Host == "" {
return "", "", ""
}
domain = parsed.Host
@ -143,36 +143,33 @@ func FormatURLParts(rawURL string) (domain, path string) {
domain = domain[4:]
}
// Clean up the path - remove empty segments and trailing slashes
rootURL = parsed.Scheme + "://" + parsed.Host
path = strings.Trim(parsed.Path, "/")
pathSegments := strings.Split(path, "/")
// Filter out empty segments
var cleanSegments []string
for _, seg := range pathSegments {
if seg != "" {
cleanSegments = append(cleanSegments, seg)
}
}
path = strings.Join(cleanSegments, "/")
return domain, path
return domain, path, rootURL
}
func FormatLinkHTML(rawURL string) LinkParts {
domain, path := FormatURLParts(rawURL)
domain, path, root := FormatURLParts(rawURL)
if path == "" {
return LinkParts{
Domain: template.HTML(fmt.Sprintf(`<span class="result-domain">%s</span>`, template.HTMLEscapeString(domain))),
}
lp := LinkParts{
RootURL: root,
}
// Only add separators between non-empty path segments
lp.Domain = template.HTML(fmt.Sprintf(`<span class="result-domain">%s</span>`, template.HTMLEscapeString(domain)))
if path != "" {
pathDisplay := strings.ReplaceAll(path, "/", " ")
return LinkParts{
Domain: template.HTML(fmt.Sprintf(`<span class="result-domain">%s</span>`, template.HTMLEscapeString(domain))),
Path: template.HTML(fmt.Sprintf(`<span class="result-path"> %s</span>`, template.HTMLEscapeString(pathDisplay))),
lp.Path = template.HTML(fmt.Sprintf(`<span class="result-path"> %s</span>`, template.HTMLEscapeString(pathDisplay)))
}
return lp
}

View file

@ -68,8 +68,8 @@ func HandleTextSearch(w http.ResponseWriter, settings UserSettings, query string
// First format the link
prettyLink := FormatLinkHTML(r.URL)
faviconID := faviconIDFromURL(r.URL)
faviconURL := getFaviconProxyURL("", r.URL) //string(prettyLink.Domain)
faviconID := faviconIDFromURL(prettyLink.RootURL)
faviconURL := getFaviconProxyURL("", prettyLink.RootURL)
decoratedResults = append(decoratedResults, DecoratedResult{
TextSearchResult: r,