From a11db20b6f5b7b99688ff4000394688457f26a81 Mon Sep 17 00:00:00 2001 From: Abraham Egnor Date: Wed, 25 Dec 2024 21:34:54 -0500 Subject: [PATCH 1/6] add filtering of help posts --- server/activity_handler.go | 44 +++++++++++++++++++++++++++++++++++++- server/index_handler.go | 2 +- server/localization.go | 11 ++++++++-- server/static/index.js | 24 ++++++++++++++++++--- server/static/style.css | 5 +++-- 5 files changed, 77 insertions(+), 9 deletions(-) diff --git a/server/activity_handler.go b/server/activity_handler.go index 7f883f1..113f528 100644 --- a/server/activity_handler.go +++ b/server/activity_handler.go @@ -2,6 +2,7 @@ package server import ( "github.com/labstack/echo" + log "github.com/sirupsen/logrus" ) type jsonResponseActivity struct { @@ -16,7 +17,7 @@ type jsonResponse struct { func ActivityHandler(db Database) echo.HandlerFunc { return func(c echo.Context) error { - activity, next, err := db.Activity(LocaleForRequest(c.Request()), c.QueryParam("next"), 50) + activity, next, err := fetchActivity(db, LocaleForRequest(c.Request()), c.QueryParam("next"), c.QueryParam("nohelp") == "true") if err != nil { return err } @@ -41,3 +42,44 @@ func ActivityHandler(db Database) echo.HandlerFunc { return c.JSON(200, response) } } + +const MinPageSize = 50 +const DbRequestSize = 50 +const MaxDbRequests = 10 + +func fetchActivity(db Database, locale *Locale, start string, nohelp bool) ([]Activity, string, error) { + activity := []Activity{} + next := start + for i := 0; i < MaxDbRequests && len(activity) < MinPageSize; i++ { + as, n, err := db.Activity(locale, next, DbRequestSize) + if err != nil { + return nil, "", err + } + next = n + if len(as) == 0 && n == "" { + log.Debug("end of activity db") + break + } + skipped := 0 + if nohelp { + for _, a := range as { + if fp, ok := a.(*ForumPost); ok { + if fp.ForumId == locale.HelpForumId { + skipped++ + continue + } + } + activity = append(activity, a) + } + } else { + activity = append(activity, as...) + } + log.WithFields(log.Fields{ + "count": len(as), + "buffered": len(activity), + "skipped": skipped, + "next": next, + }).Debug("processed activity batch") + } + return activity, next, nil +} diff --git a/server/index_handler.go b/server/index_handler.go index f5ac837..90a20b6 100644 --- a/server/index_handler.go +++ b/server/index_handler.go @@ -58,7 +58,7 @@ var index = ` -
+