summaryrefslogtreecommitdiff
path: root/internal/cleaner/media.go
diff options
context:
space:
mode:
authorLibravatar kim <89579420+NyaaaWhatsUpDoc@users.noreply.github.com>2024-06-06 10:44:43 +0000
committerLibravatar GitHub <noreply@github.com>2024-06-06 11:44:43 +0100
commit5dcc954072ca0a27107ed3fdc6806986f61df7d0 (patch)
tree7a6380bf39e99dbcfee4fbe1434697706637d2bc /internal/cleaner/media.go
parent[bugfix] Don't nil emojis + fields on blocked accounts (#2968) (diff)
downloadgotosocial-5dcc954072ca0a27107ed3fdc6806986f61df7d0.tar.xz
[feature] do not uncache status / emoji media if attached status is bookmarked (#2956)
* do not uncache status / emoji media if attached status is bookmarked * add status bookmark and bookmark IDs caches * update status bookmark tests * move IsStatusBookmarkedBy() to StatusBookmark{} interface, rely on cache * fix envparsing.sh test
Diffstat (limited to 'internal/cleaner/media.go')
-rw-r--r--internal/cleaner/media.go22
1 files changed, 16 insertions, 6 deletions
diff --git a/internal/cleaner/media.go b/internal/cleaner/media.go
index 185c64fb9..bf4a08699 100644
--- a/internal/cleaner/media.go
+++ b/internal/cleaner/media.go
@@ -35,9 +35,7 @@ import (
// Media encompasses a set of
// media cleanup / admin utils.
-type Media struct {
- *Cleaner
-}
+type Media struct{ *Cleaner }
// All will execute all cleaner.Media utilities synchronously, including output logging.
// Context will be checked for `gtscontext.DryRun()` in order to actually perform the action.
@@ -475,9 +473,21 @@ func (m *Media) uncacheRemote(ctx context.Context, after time.Time, media *gtsmo
return false, nil
}
- if status != nil && status.FetchedAt.After(after) {
- l.Debug("skipping due to recently fetched status")
- return false, nil
+ if status != nil {
+ // Check if recently used status.
+ if status.FetchedAt.After(after) {
+ l.Debug("skipping due to recently fetched status")
+ return false, nil
+ }
+
+ // Check whether status is bookmarked by active accounts.
+ bookmarked, err := m.state.DB.IsStatusBookmarked(ctx, status.ID)
+ if err != nil {
+ return false, err
+ } else if bookmarked {
+ l.Debug("skipping due to bookmarked status")
+ return false, nil
+ }
}
}