diff options
Diffstat (limited to 'internal/filter/status/status.go')
| -rw-r--r-- | internal/filter/status/status.go | 31 |
1 files changed, 26 insertions, 5 deletions
diff --git a/internal/filter/status/status.go b/internal/filter/status/status.go index 5f997129d..e38131ae3 100644 --- a/internal/filter/status/status.go +++ b/internal/filter/status/status.go @@ -25,6 +25,7 @@ import ( apimodel "code.superseriousbusiness.org/gotosocial/internal/api/model" "code.superseriousbusiness.org/gotosocial/internal/cache" + "code.superseriousbusiness.org/gotosocial/internal/gtscontext" "code.superseriousbusiness.org/gotosocial/internal/gtserror" "code.superseriousbusiness.org/gotosocial/internal/gtsmodel" ) @@ -159,6 +160,31 @@ func (f *Filter) getStatusFilterResults( return results, nil } + // Check if status is boost. + if status.BoostOfID != "" { + if status.BoostOf == nil { + var err error + + // Ensure original status is loaded on boost. + status.BoostOf, err = f.state.DB.GetStatusByID( + gtscontext.SetBarebones(ctx), + status.BoostOfID, + ) + if err != nil { + return results, gtserror.Newf("error getting boosted status of %s: %w", status.URI, err) + } + } + + // From here look at details + // for original boosted status. + status = status.BoostOf + } + + // For proper status filtering we need all fields populated. + if err := f.state.DB.PopulateStatus(ctx, status); err != nil { + return results, gtserror.Newf("error populating status: %w", err) + } + // Get the string fields status is // filterable on for keyword matching. fields := getFilterableFields(status) @@ -169,11 +195,6 @@ func (f *Filter) getStatusFilterResults( return results, gtserror.Newf("error getting account filters: %w", err) } - // For proper status filtering we need all fields populated. - if err := f.state.DB.PopulateStatus(ctx, status); err != nil { - return results, gtserror.Newf("error populating status: %w", err) - } - // Generate result for each filter. for _, filter := range filters { |
