package user import "encoding/base64" import "encoding/json" import "net/http" import "slices" import "strconv" import "time" import "soko/pkg/app/utils" import "soko/pkg/models" templ packages(preferences models.PackagesPreferences) {

Overview


Layout

Versions + Metadata (default)
Versions + Metadata + Changelog

Keywords

@archesTwoColumns(preferences.Overview.Keywords)

EAPI version

Show

Outdated Versions

Metadata

Changelog

Layout
Size

Dependencies


Default Page

Pull requests


Layout

Bugs


Layout

Security


Layout

Changelog


Layout
Size
} func EditPackagesPreferences(w http.ResponseWriter, r *http.Request) { userPreferences := utils.GetUserPreferences(r) r.ParseForm() // Overview: Layout overviewLayout := r.Form.Get("overview-layout") if overviewLayout == "minimal" || overviewLayout == "full" { userPreferences.Packages.Overview.Layout = overviewLayout } // Overview: Keywords overviewKeywords := r.Form["overview-keywords"] userPreferences.Packages.Overview.Keywords = overviewKeywords // EAPI showEAPI := r.Form.Get("overview-eapi") if showEAPI == "none" || showEAPI == "column" || showEAPI == "inline" { userPreferences.Packages.Overview.EAPI = showEAPI } // Overview: Show Outdated userPreferences.Packages.Overview.ShowOutdated = r.Form.Get("overview-showOutdated") == "true" // Overview: Metadata fields overviewMetadataFields := r.Form["overview-metadata-fields"] userPreferences.Packages.Overview.MetadataFields = overviewMetadataFields // Overview: Changelog changelogSize, err := strconv.Atoi(r.Form.Get("overview-changelog-size")) if err == nil { if changelogSize < 100 { userPreferences.Packages.Overview.ChangelogLength = changelogSize } else { userPreferences.Packages.Overview.ChangelogLength = 100 } } // Dependencies defaultDependenciesPage := r.Form.Get("dependencies-default-page") if defaultDependenciesPage == "dependencies" || defaultDependenciesPage == "reverse-dependencies" { userPreferences.Packages.Dependencies.Default = defaultDependenciesPage } // // Store cookie // encodedUserPreferences, err := json.Marshal(&userPreferences.Packages) if err == nil { sEnc := base64.StdEncoding.EncodeToString(encodedUserPreferences) addCookie(w, "userpref_packages", "/", sEnc, 365*24*time.Hour) } http.Redirect(w, r, "/user/preferences/packages", http.StatusSeeOther) } func ResetPackages(w http.ResponseWriter, r *http.Request) { userPreferences := utils.GetDefaultUserPreferences() encodedUserPreferences, err := json.Marshal(&userPreferences.Packages) if err == nil { sEnc := base64.StdEncoding.EncodeToString(encodedUserPreferences) addCookie(w, "userpref_packages", "/", sEnc, 365*24*time.Hour) } http.Redirect(w, r, "/user/preferences/packages", http.StatusSeeOther) }