summaryrefslogtreecommitdiff
path: root/internal/processing/common
diff options
context:
space:
mode:
authorLibravatar kim <grufwub@gmail.com>2025-07-04 15:30:39 +0200
committerLibravatar kim <gruf@noreply.codeberg.org>2025-07-04 15:30:39 +0200
commit66e1ec14aa07e115580afc8e1399677f3b54eeda (patch)
tree54aabccf5c0540abbfdea771745f354e05c8eb1a /internal/processing/common
parent[bugfix] set correct scope for StatusFavePOSTHandler (#4310) (diff)
downloadgotosocial-66e1ec14aa07e115580afc8e1399677f3b54eeda.tar.xz
[chore] move status filtering from type converter (#4306)
This finalizes the moving status filtering out of the type converter, and into its own `./internal/filter/` subpkg :) Reviewed-on: https://codeberg.org/superseriousbusiness/gotosocial/pulls/4306 Co-authored-by: kim <grufwub@gmail.com> Co-committed-by: kim <grufwub@gmail.com>
Diffstat (limited to 'internal/processing/common')
-rw-r--r--internal/processing/common/common.go28
-rw-r--r--internal/processing/common/status.go27
2 files changed, 34 insertions, 21 deletions
diff --git a/internal/processing/common/common.go b/internal/processing/common/common.go
index bebbdffea..2b3adb9a0 100644
--- a/internal/processing/common/common.go
+++ b/internal/processing/common/common.go
@@ -20,6 +20,7 @@ package common
import (
"code.superseriousbusiness.org/gotosocial/internal/federation"
"code.superseriousbusiness.org/gotosocial/internal/filter/mutes"
+ "code.superseriousbusiness.org/gotosocial/internal/filter/status"
"code.superseriousbusiness.org/gotosocial/internal/filter/visibility"
"code.superseriousbusiness.org/gotosocial/internal/media"
"code.superseriousbusiness.org/gotosocial/internal/state"
@@ -30,12 +31,13 @@ import (
// common to multiple logical domains of the
// processing subsection of the codebase.
type Processor struct {
- state *state.State
- media *media.Manager
- converter *typeutils.Converter
- federator *federation.Federator
- visFilter *visibility.Filter
- muteFilter *mutes.Filter
+ state *state.State
+ media *media.Manager
+ converter *typeutils.Converter
+ federator *federation.Federator
+ visFilter *visibility.Filter
+ muteFilter *mutes.Filter
+ statusFilter *status.Filter
}
// New returns a new Processor instance.
@@ -46,13 +48,15 @@ func New(
federator *federation.Federator,
visFilter *visibility.Filter,
muteFilter *mutes.Filter,
+ statusFilter *status.Filter,
) Processor {
return Processor{
- state: state,
- media: media,
- converter: converter,
- federator: federator,
- visFilter: visFilter,
- muteFilter: muteFilter,
+ state: state,
+ media: media,
+ converter: converter,
+ federator: federator,
+ visFilter: visFilter,
+ muteFilter: muteFilter,
+ statusFilter: statusFilter,
}
}
diff --git a/internal/processing/common/status.go b/internal/processing/common/status.go
index f5f230e98..2bcf89a02 100644
--- a/internal/processing/common/status.go
+++ b/internal/processing/common/status.go
@@ -27,7 +27,6 @@ import (
"code.superseriousbusiness.org/gotosocial/internal/gtserror"
"code.superseriousbusiness.org/gotosocial/internal/gtsmodel"
"code.superseriousbusiness.org/gotosocial/internal/log"
- "code.superseriousbusiness.org/gotosocial/internal/typeutils"
)
// GetOwnStatus fetches the given status with ID,
@@ -213,7 +212,6 @@ func (p *Processor) GetAPIStatus(
apiStatus, err := p.converter.StatusToAPIStatus(ctx,
target,
requester,
- gtsmodel.FilterContextNone,
)
if err != nil {
err := gtserror.Newf("error converting: %w", err)
@@ -271,22 +269,33 @@ func (p *Processor) GetVisibleAPIStatuses(
continue
}
+ // Check whether status is filtered in context by requesting account.
+ filtered, hide, err := p.statusFilter.StatusFilterResultsInContext(ctx,
+ requester,
+ status,
+ filterCtx,
+ )
+ if err != nil {
+ l.Errorf("error filtering: %v", err)
+ continue
+ }
+
+ if hide {
+ continue
+ }
+
// Convert to API status, taking mute / filter into account.
apiStatus, err := p.converter.StatusToAPIStatus(ctx,
status,
requester,
- filterCtx,
)
- if err != nil && !errors.Is(err, typeutils.ErrHideStatus) {
+ if err != nil {
l.Errorf("error converting: %v", err)
continue
}
- if apiStatus == nil {
- // Status was
- // filtered out.
- continue
- }
+ // Set filter results on status.
+ apiStatus.Filtered = filtered
// Append converted status to return slice.
apiStatuses = append(apiStatuses, *apiStatus)