From 45f4afe60e29e147e3adfaa4d7b66ca58e22b1de Mon Sep 17 00:00:00 2001 From: Vyr Cossont Date: Mon, 6 May 2024 04:49:08 -0700 Subject: feature: filters v2 server-side warning/hiding (#2793) * Remove dead code * Filter statuses when converting to frontend representation * status.filtered is an array * Make matching case-insensitive * Remove TODOs that don't need to be done now * Add missing filter check for notification * lint: rename ErrHideStatus * APIFilterActionToFilterAction not used yet * swaggerino docseroni * Address review comments * Add apimodel.FilterActionNone --------- Co-authored-by: tobi <31960611+tsmethurst@users.noreply.github.com> Co-authored-by: tobi --- internal/timeline/prepare.go | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'internal/timeline/prepare.go') diff --git a/internal/timeline/prepare.go b/internal/timeline/prepare.go index 07bde79fa..ec595ce42 100644 --- a/internal/timeline/prepare.go +++ b/internal/timeline/prepare.go @@ -24,6 +24,7 @@ import ( "codeberg.org/gruf/go-kv" "github.com/superseriousbusiness/gotosocial/internal/db" + statusfilter "github.com/superseriousbusiness/gotosocial/internal/filter/status" "github.com/superseriousbusiness/gotosocial/internal/gtserror" "github.com/superseriousbusiness/gotosocial/internal/log" ) @@ -121,6 +122,12 @@ func (t *timeline) prepareXBetweenIDs(ctx context.Context, amount int, behindID for e, entry := range toPrepare { prepared, err := t.prepareFunction(ctx, t.timelineID, entry.itemID) if err != nil { + if errors.Is(err, statusfilter.ErrHideStatus) { + // This item has been filtered out by the requesting user's filters. + // Remove it and skip past it. + t.items.data.Remove(e) + continue + } if errors.Is(err, db.ErrNoEntries) { // ErrNoEntries means something has been deleted, // so we'll likely not be able to ever prepare this. -- cgit v1.2.3