mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2025-11-28 15:23:32 -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
|
|
@ -19,6 +19,7 @@ package account
|
|||
|
||||
import (
|
||||
"code.superseriousbusiness.org/gotosocial/internal/federation"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/filter/status"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/filter/visibility"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/gtsmodel"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/media"
|
||||
|
|
@ -39,6 +40,7 @@ type Processor struct {
|
|||
converter *typeutils.Converter
|
||||
mediaManager *media.Manager
|
||||
visFilter *visibility.Filter
|
||||
statusFilter *status.Filter
|
||||
formatter *text.Formatter
|
||||
federator *federation.Federator
|
||||
parseMention gtsmodel.ParseMentionFunc
|
||||
|
|
@ -53,6 +55,7 @@ func New(
|
|||
mediaManager *media.Manager,
|
||||
federator *federation.Federator,
|
||||
visFilter *visibility.Filter,
|
||||
statusFilter *status.Filter,
|
||||
parseMention gtsmodel.ParseMentionFunc,
|
||||
) Processor {
|
||||
return Processor{
|
||||
|
|
@ -61,6 +64,7 @@ func New(
|
|||
converter: converter,
|
||||
mediaManager: mediaManager,
|
||||
visFilter: visFilter,
|
||||
statusFilter: statusFilter,
|
||||
formatter: text.NewFormatter(state.DB),
|
||||
federator: federator,
|
||||
parseMention: parseMention,
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ import (
|
|||
"code.superseriousbusiness.org/gotosocial/internal/email"
|
||||
"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/gtsmodel"
|
||||
"code.superseriousbusiness.org/gotosocial/internal/media"
|
||||
|
|
@ -107,8 +108,9 @@ func (suite *AccountStandardTestSuite) SetupTest() {
|
|||
|
||||
visFilter := visibility.NewFilter(&suite.state)
|
||||
mutesFilter := mutes.NewFilter(&suite.state)
|
||||
common := common.New(&suite.state, suite.mediaManager, suite.tc, suite.federator, visFilter, mutesFilter)
|
||||
suite.accountProcessor = account.New(&common, &suite.state, suite.tc, suite.mediaManager, suite.federator, visFilter, processing.GetParseMentionFunc(&suite.state, suite.federator))
|
||||
statusFilter := status.NewFilter(&suite.state)
|
||||
common := common.New(&suite.state, suite.mediaManager, suite.tc, suite.federator, visFilter, mutesFilter, statusFilter)
|
||||
suite.accountProcessor = account.New(&common, &suite.state, suite.tc, suite.mediaManager, suite.federator, visFilter, statusFilter, processing.GetParseMentionFunc(&suite.state, suite.federator))
|
||||
testrig.StandardDBSetup(suite.db, nil)
|
||||
testrig.StandardStorageSetup(suite.storage, "../../../testrig/media")
|
||||
}
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@ func (p *Processor) BookmarksGet(ctx context.Context, requestingAccount *gtsmode
|
|||
}
|
||||
|
||||
// Convert the status.
|
||||
item, err := p.converter.StatusToAPIStatus(ctx, status, requestingAccount, gtsmodel.FilterContextNone)
|
||||
item, err := p.converter.StatusToAPIStatus(ctx, status, requestingAccount)
|
||||
if err != nil {
|
||||
log.Errorf(ctx, "error converting bookmarked status to api: %s", err)
|
||||
continue
|
||||
|
|
|
|||
|
|
@ -96,13 +96,33 @@ func (p *Processor) StatusesGet(
|
|||
return nil, gtserror.NewErrorInternalError(err)
|
||||
}
|
||||
|
||||
for _, s := range filtered {
|
||||
for _, status := range filtered {
|
||||
// ...
|
||||
filtered, hide, err := p.statusFilter.StatusFilterResultsInContext(ctx,
|
||||
requestingAccount,
|
||||
status,
|
||||
gtsmodel.FilterContextAccount,
|
||||
)
|
||||
if err != nil {
|
||||
log.Errorf(ctx, "error filtering status: %v", err)
|
||||
continue
|
||||
}
|
||||
|
||||
if hide {
|
||||
// Don't show.
|
||||
continue
|
||||
}
|
||||
|
||||
// Convert filtered statuses to API statuses.
|
||||
item, err := p.converter.StatusToAPIStatus(ctx, s, requestingAccount, gtsmodel.FilterContextAccount)
|
||||
item, err := p.converter.StatusToAPIStatus(ctx, status, requestingAccount)
|
||||
if err != nil {
|
||||
log.Errorf(ctx, "error convering to api status: %v", err)
|
||||
continue
|
||||
}
|
||||
|
||||
// Set any filter results.
|
||||
item.Filtered = filtered
|
||||
|
||||
items = append(items, item)
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue