fixed bug for irrelevant results (caused by showing only results in the user's language)
This commit is contained in:
parent
20890e8717
commit
088d92c1ea
8 changed files with 110 additions and 86 deletions
59
main.go
59
main.go
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue