Fix remote and staff-removed statuses leaving media behind for a day (#11638)
The reason for unattaching media instead of removing it is to support delete & redraft functionality, but remote or staff-removed statuses will never be redrafted, so the media should be deleted immediately
This commit is contained in:
parent
e9c3d1ef46
commit
97192d9a77
9 changed files with 22 additions and 10 deletions
|
@ -4,6 +4,11 @@ class RemoveStatusService < BaseService
|
|||
include Redisable
|
||||
include Payloadable
|
||||
|
||||
# Delete a status
|
||||
# @param [Status] status
|
||||
# @param [Hash] options
|
||||
# @option [Boolean] :redraft
|
||||
# @options [Boolean] :original_removed
|
||||
def call(status, **options)
|
||||
@payload = Oj.dump(event: :delete, payload: status.id.to_s)
|
||||
@status = status
|
||||
|
@ -24,6 +29,7 @@ class RemoveStatusService < BaseService
|
|||
remove_from_public
|
||||
remove_from_media if status.media_attachments.any?
|
||||
remove_from_spam_check
|
||||
remove_media
|
||||
|
||||
@status.destroy!
|
||||
else
|
||||
|
@ -143,6 +149,12 @@ class RemoveStatusService < BaseService
|
|||
redis.publish('timeline:public:local:media', @payload) if @status.local?
|
||||
end
|
||||
|
||||
def remove_media
|
||||
return if @options[:redraft]
|
||||
|
||||
@status.media_attachments.destroy_all
|
||||
end
|
||||
|
||||
def remove_from_spam_check
|
||||
redis.zremrangebyscore("spam_check:#{@status.account_id}", @status.id, @status.id)
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue