summaryrefslogtreecommitdiff
path: root/internal/filter/status/status.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/filter/status/status.go')
-rw-r--r--internal/filter/status/status.go31
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 {