aboutsummaryrefslogtreecommitdiff
path: root/backend/home.go
diff options
context:
space:
mode:
Diffstat (limited to 'backend/home.go')
-rw-r--r--backend/home.go60
1 files changed, 26 insertions, 34 deletions
diff --git a/backend/home.go b/backend/home.go
index d223cf5..d41102c 100644
--- a/backend/home.go
+++ b/backend/home.go
@@ -2,9 +2,7 @@ package backend
import (
"log/slog"
- "maps"
"net/http"
- "slices"
"strconv"
"github.com/go-chi/chi/v5"
@@ -27,43 +25,37 @@ func (h *homeData) SetData(d *data) {
func HandleHome(r *chi.Mux) {
r.Get("/", func(w http.ResponseWriter, r *http.Request) {
- rawPage := r.URL.Query().Get("page")
- page := 1
- if rawPage != "" {
- var err error
- page, err = strconv.Atoi(rawPage)
- if err != nil || page < 1 {
- slog.Warn("invalid page number", "rawPage", rawPage)
- w.WriteHeader(http.StatusBadRequest)
- return
- }
- }
- d := new(homeData)
- d.data = new(data)
- if sortedLogs == nil {
- sortLogs()
- }
- d.CurrentPage = page
- d.PagesNumber = len(sortedLogs)/maxLogsPerPage + 1
- if d.PagesNumber < page {
- http.NotFoundHandler().ServeHTTP(w, r)
+ d := handleGenericLogsDisplay(w, r)
+ if d == nil {
return
}
- d.Logs = sortedLogs[(page-1)*maxLogsPerPage : min(page*maxLogsPerPage, len(sortedLogs))]
d.handleGeneric(w, r, "home", d)
})
}
-func sortLogs() {
- sortedLogs = slices.SortedFunc(maps.Values(logs), func(l *logData, l2 *logData) int {
- lt := l.ModAt
- l2t := l2.ModAt
- // we want it reversed
- if lt.Before(l2t) {
- return 1
- } else if lt.After(l2t) {
- return -1
+func handleGenericLogsDisplay(w http.ResponseWriter, r *http.Request) *homeData {
+ rawPage := r.URL.Query().Get("page")
+ page := 1
+ if rawPage != "" {
+ var err error
+ page, err = strconv.Atoi(rawPage)
+ if err != nil || page < 1 {
+ slog.Warn("invalid page number", "rawPage", rawPage)
+ w.WriteHeader(http.StatusBadRequest)
+ return nil
}
- return 0
- })
+ }
+ d := new(homeData)
+ d.data = new(data)
+ if sortedLogs == nil {
+ sortLogs()
+ }
+ d.CurrentPage = page
+ d.PagesNumber = len(sortedLogs)/maxLogsPerPage + 1
+ if d.PagesNumber < page {
+ http.NotFoundHandler().ServeHTTP(w, r)
+ return nil
+ }
+ d.Logs = sortedLogs[(page-1)*maxLogsPerPage : min(page*maxLogsPerPage, len(sortedLogs))]
+ return d
}