summaryrefslogtreecommitdiff
path: root/internal/processing/timeline/public.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/processing/timeline/public.go')
-rw-r--r--internal/processing/timeline/public.go16
1 files changed, 15 insertions, 1 deletions
diff --git a/internal/processing/timeline/public.go b/internal/processing/timeline/public.go
index 87de04f4a..a0e594629 100644
--- a/internal/processing/timeline/public.go
+++ b/internal/processing/timeline/public.go
@@ -24,6 +24,7 @@ import (
apimodel "github.com/superseriousbusiness/gotosocial/internal/api/model"
"github.com/superseriousbusiness/gotosocial/internal/db"
+ statusfilter "github.com/superseriousbusiness/gotosocial/internal/filter/status"
"github.com/superseriousbusiness/gotosocial/internal/gtserror"
"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
"github.com/superseriousbusiness/gotosocial/internal/log"
@@ -46,6 +47,16 @@ func (p *Processor) PublicTimelineGet(
items = make([]any, 0, limit)
)
+ var filters []*gtsmodel.Filter
+ if requester != nil {
+ var err error
+ filters, err = p.state.DB.GetFiltersForAccountID(ctx, requester.ID)
+ if err != nil {
+ err = gtserror.Newf("couldn't retrieve filters for account %s: %w", requester.ID, err)
+ return nil, gtserror.NewErrorInternalError(err)
+ }
+ }
+
// Try a few times to select appropriate public
// statuses from the db, paging up or down to
// reattempt if nothing suitable is found.
@@ -87,7 +98,10 @@ outer:
continue inner
}
- apiStatus, err := p.converter.StatusToAPIStatus(ctx, s, requester)
+ apiStatus, err := p.converter.StatusToAPIStatus(ctx, s, requester, statusfilter.FilterContextPublic, filters)
+ if errors.Is(err, statusfilter.ErrHideStatus) {
+ continue
+ }
if err != nil {
log.Errorf(ctx, "error converting to api status: %v", err)
continue inner