fixed bug for irrelevant results (caused by showing only results in the user's language)

This commit is contained in:
partisan 2024-09-27 13:16:36 +02:00
parent 20890e8717
commit 088d92c1ea
8 changed files with 110 additions and 86 deletions

59
main.go
View file

@ -17,7 +17,7 @@ type LanguageOption struct {
var settings UserSettings
var languageOptions = []LanguageOption{
{Code: "", Name: "Auto-detect"},
{Code: "", Name: "Any"},
{Code: "en", Name: "English"},
{Code: "af", Name: "Afrikaans"},
{Code: "ar", Name: "العربية (Arabic)"},
@ -69,35 +69,37 @@ var languageOptions = []LanguageOption{
func handleSearch(w http.ResponseWriter, r *http.Request) {
query, safe, lang, searchType, page := parseSearchParams(r)
// Load user settings
settings = loadUserSettings(w, r)
// Update theme if provided, or use existing settings
theme := r.URL.Query().Get("theme")
if theme != "" {
settings.Theme = theme
saveUserSettings(w, settings) // Save if theme is updated
saveUserSettings(w, settings)
} else if settings.Theme == "" {
settings.Theme = "dark" // Default theme
settings.Theme = "dark"
}
// Update safe search if provided, or use existing settings
if safe != "" && safe != settings.SafeSearch {
settings.SafeSearch = safe
saveUserSettings(w, settings) // Save if safe search is updated
saveUserSettings(w, settings)
}
// Update language if provided, or use existing settings
if lang != "" && lang != settings.Language {
settings.Language = lang
saveUserSettings(w, settings) // Save if language is updated
} else if settings.Language == "" {
// If no language set, auto-detect from browser or default to "en"
settings.Language = normalizeLangCode(r.Header.Get("Accept-Language"))
saveUserSettings(w, settings) // Save if language is auto-detected
// Update site language if provided, or use existing settings
if lang != "" && lang != settings.SiteLanguage {
settings.SiteLanguage = lang
saveUserSettings(w, settings)
} else if settings.SiteLanguage == "" {
settings.SiteLanguage = normalizeLangCode(r.Header.Get("Accept-Language"))
saveUserSettings(w, settings)
}
// Update search language (can be empty)
searchLang := r.URL.Query().Get("search_lang")
if searchLang != settings.SearchLanguage {
settings.SearchLanguage = searchLang
saveUserSettings(w, settings)
}
// This will do for now (to handle Dark Reader addon)
switch settings.Theme {
case "dark", "black", "night", "latte":
settings.IsThemeDark = true
@ -105,21 +107,21 @@ func handleSearch(w http.ResponseWriter, r *http.Request) {
settings.IsThemeDark = false
}
// Check if there is a search query
if query == "" {
// If no query is provided, render the search page template
data := struct {
LanguageOptions []LanguageOption
CurrentLang string
Theme string
Safe string
IsThemeDark bool
LanguageOptions []LanguageOption
CurrentLang string
CurrentSearchLang string
Theme string
Safe string
IsThemeDark bool
}{
LanguageOptions: languageOptions,
CurrentLang: settings.Language,
Theme: settings.Theme,
Safe: settings.SafeSearch,
IsThemeDark: settings.IsThemeDark,
LanguageOptions: languageOptions,
CurrentLang: settings.SiteLanguage,
CurrentSearchLang: settings.SearchLanguage,
Theme: settings.Theme,
Safe: settings.SafeSearch,
IsThemeDark: settings.IsThemeDark,
}
tmpl := template.Must(template.ParseFiles("templates/search.html"))
@ -127,7 +129,6 @@ func handleSearch(w http.ResponseWriter, r *http.Request) {
return
}
// Handle search based on the type
switch searchType {
case "image":
handleImageSearch(w, settings, query, page)