mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2025-11-22 11:17:29 -06:00
[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>
This commit is contained in:
parent
79914bdbf7
commit
66e1ec14aa
38 changed files with 565 additions and 846 deletions
|
|
@ -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,
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue