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/filter/status/status.go | 45 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 internal/filter/status/status.go (limited to 'internal/filter') diff --git a/internal/filter/status/status.go b/internal/filter/status/status.go new file mode 100644 index 000000000..7cf0a7a1e --- /dev/null +++ b/internal/filter/status/status.go @@ -0,0 +1,45 @@ +// GoToSocial +// Copyright (C) GoToSocial Authors admin@gotosocial.org +// SPDX-License-Identifier: AGPL-3.0-or-later +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +// Package status represents status filters managed by the user through the API. +package status + +import ( + "errors" +) + +// ErrHideStatus indicates that a status has been filtered and should not be returned at all. +var ErrHideStatus = errors.New("hide status") + +// FilterContext determines the filters that apply to a given status or list of statuses. +type FilterContext string + +const ( + // FilterContextNone means no filters should be applied. + // There are no filters with this context; it's for internal use only. + FilterContextNone FilterContext = "" + // FilterContextHome means this status is being filtered as part of a home or list timeline. + FilterContextHome FilterContext = "home" + // FilterContextNotifications means this status is being filtered as part of the notifications timeline. + FilterContextNotifications FilterContext = "notifications" + // FilterContextPublic means this status is being filtered as part of a public or tag timeline. + FilterContextPublic FilterContext = "public" + // FilterContextThread means this status is being filtered as part of a thread's context. + FilterContextThread FilterContext = "thread" + // FilterContextAccount means this status is being filtered as part of an account's statuses. + FilterContextAccount FilterContext = "account" +) -- cgit v1.2.3