0
0
Fork 0

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:
Eugen Rochko 2019-08-22 04:17:12 +02:00 committed by GitHub
parent e9c3d1ef46
commit 97192d9a77
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 22 additions and 10 deletions

View file

@ -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