From cb592c7109d2c2b07f58ae68abe60167498cec9f Mon Sep 17 00:00:00 2001 From: Pablu23 Date: Wed, 3 Apr 2024 13:13:08 +0200 Subject: [PATCH] Added Settings for Manga ordering, fixed theme selector --- internal/database/table.go | 18 ------------------ internal/server/handler.go | 25 +++++++++++++++++++++---- internal/server/server.go | 1 + internal/view/Views/menu.gohtml | 27 +++++++++++---------------- 4 files changed, 33 insertions(+), 38 deletions(-) diff --git a/internal/database/table.go b/internal/database/table.go index 46c7282..1142d79 100644 --- a/internal/database/table.go +++ b/internal/database/table.go @@ -13,16 +13,6 @@ const ( Updated ) -//type Table[K comparable, T any] interface { -// Get(key K) (T, bool) -// Set(key K, new T) -// All() []T -// Delete(key K) error -// Save(db *sql.DB) error -// Load(db *sql.DB) error -// Connect(key K, value *any) bool -//} - type DbTable[K comparable, T any] struct { mutex sync.Mutex items map[K]T @@ -56,14 +46,6 @@ func (d *DbTable[K, T]) Get(key K) (T, bool) { return val, ok } -// GetRef unsafe -func (d *DbTable[K, T]) getRef(key K) (*T, bool) { - d.mutex.Lock() - defer d.mutex.Unlock() - val, ok := d.items[key] - return &val, ok -} - func (d *DbTable[K, T]) Set(key K, new T) { d.mutex.Lock() defer d.mutex.Unlock() diff --git a/internal/server/handler.go b/internal/server/handler.go index ce2e89c..fb8eb69 100644 --- a/internal/server/handler.go +++ b/internal/server/handler.go @@ -33,7 +33,7 @@ func (s *Server) HandleNew(w http.ResponseWriter, r *http.Request) { http.Redirect(w, r, "/current/", http.StatusTemporaryRedirect) } -func (s *Server) HandleMenu(w http.ResponseWriter, r *http.Request) { +func (s *Server) HandleMenu(w http.ResponseWriter, _ *http.Request) { tmpl := template.Must(view.GetViewTemplate(view.Menu)) all := s.DbMgr.Mangas.All() l := len(all) @@ -108,9 +108,9 @@ func (s *Server) HandleMenu(w http.ResponseWriter, r *http.Request) { n = time.Now().UnixNano() - sort := r.URL.Query().Get("sort") - - if sort == "" || sort == "title" { + order, ok := s.DbMgr.Settings.Get("order") + sort := order.Value + if !ok || sort == "title" { slices.SortStableFunc(mangaViewModels, func(a, b view.MangaViewModel) int { return cmp.Compare(a.Title, b.Title) }) @@ -337,6 +337,23 @@ func (s *Server) HandlePrev(w http.ResponseWriter, r *http.Request) { http.Redirect(w, r, "/current/", http.StatusTemporaryRedirect) } +func (s *Server) HandleSettingSet(w http.ResponseWriter, r *http.Request) { + settingName := r.PathValue("setting") + settingValue := r.PathValue("value") + + setting, ok := s.DbMgr.Settings.Get(settingName) + if !ok { + s.DbMgr.Settings.Set(settingName, database.NewSetting(settingName, settingValue)) + } else { + if setting.Value != settingValue { + setting.Value = settingValue + s.DbMgr.Settings.Set(settingName, setting) + } + } + + http.Redirect(w, r, "/", http.StatusTemporaryRedirect) +} + func (s *Server) HandleSetting(w http.ResponseWriter, r *http.Request) { settingName := r.PostFormValue("setting") settingValue := r.PostFormValue(settingName) diff --git a/internal/server/server.go b/internal/server/server.go index 2a80c84..a3c84a5 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -59,6 +59,7 @@ func (s *Server) Start(port int) error { http.HandleFunc("POST /delete", s.HandleDelete) http.HandleFunc("/favicon.ico", s.HandleFavicon) http.HandleFunc("POST /setting/", s.HandleSetting) + http.HandleFunc("GET /setting/set/{setting}/{value}", s.HandleSettingSet) // Update Latest Chapter every 5 Minutes go func(s *Server) { diff --git a/internal/view/Views/menu.gohtml b/internal/view/Views/menu.gohtml index 4331fd8..65d05b3 100644 --- a/internal/view/Views/menu.gohtml +++ b/internal/view/Views/menu.gohtml @@ -18,6 +18,11 @@ color: white; } + .white { + background-color: white; + color: black; + } + .button-36 { background-image: linear-gradient(92.88deg, #455EB5 9.16%, #5643CC 43.89%, #673FD7 64.72%); border-radius: 8px; @@ -116,17 +121,8 @@ } - - - +