diff options
Diffstat (limited to 'internal/processing/status/context.go')
-rw-r--r-- | internal/processing/status/context.go | 61 |
1 files changed, 19 insertions, 42 deletions
diff --git a/internal/processing/status/context.go b/internal/processing/status/context.go index 9f3a7d089..19c6cac18 100644 --- a/internal/processing/status/context.go +++ b/internal/processing/status/context.go @@ -24,7 +24,6 @@ import ( apimodel "github.com/superseriousbusiness/gotosocial/internal/api/model" statusfilter "github.com/superseriousbusiness/gotosocial/internal/filter/status" - "github.com/superseriousbusiness/gotosocial/internal/filter/usermute" "github.com/superseriousbusiness/gotosocial/internal/gtscontext" "github.com/superseriousbusiness/gotosocial/internal/gtserror" "github.com/superseriousbusiness/gotosocial/internal/gtsmodel" @@ -308,22 +307,7 @@ func (p *Processor) ContextGet( return nil, gtserror.NewErrorInternalError(err) } - convert := func( - ctx context.Context, - status *gtsmodel.Status, - requestingAccount *gtsmodel.Account, - ) (*apimodel.Status, error) { - return p.converter.StatusToAPIStatus( - ctx, - status, - requestingAccount, - statusfilter.FilterContextThread, - filters, - usermute.NewCompiledUserMuteList(mutes), - ) - } - - // Retrieve the thread context. + // Retrieve the full thread context. threadContext, errWithCode := p.contextGet( ctx, requester, @@ -333,34 +317,27 @@ func (p *Processor) ContextGet( return nil, errWithCode } - apiContext := &apimodel.ThreadContext{ - Ancestors: make([]apimodel.Status, 0, len(threadContext.ancestors)), - Descendants: make([]apimodel.Status, 0, len(threadContext.descendants)), - } + var apiContext apimodel.ThreadContext - // Convert ancestors + filter - // out ones that aren't visible. - for _, status := range threadContext.ancestors { - if v, err := p.visFilter.StatusVisible(ctx, requester, status); err == nil && v { - status, err := convert(ctx, status, requester) - if err == nil { - apiContext.Ancestors = append(apiContext.Ancestors, *status) - } - } - } + // Convert and filter the thread context ancestors. + apiContext.Ancestors = p.c.GetVisibleAPIStatuses(ctx, + requester, + threadContext.ancestors, + statusfilter.FilterContextThread, + filters, + mutes, + ) - // Convert descendants + filter - // out ones that aren't visible. - for _, status := range threadContext.descendants { - if v, err := p.visFilter.StatusVisible(ctx, requester, status); err == nil && v { - status, err := convert(ctx, status, requester) - if err == nil { - apiContext.Descendants = append(apiContext.Descendants, *status) - } - } - } + // Convert and filter the thread context descendants + apiContext.Descendants = p.c.GetVisibleAPIStatuses(ctx, + requester, + threadContext.descendants, + statusfilter.FilterContextThread, + filters, + mutes, + ) - return apiContext, nil + return &apiContext, nil } // WebContextGet is like ContextGet, but is explicitly |