diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2021-04-17 15:41:57 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-17 15:41:57 +0200 |
commit | ca3bc1b09f344f38164aa65d2554cf50d5c10cc0 (patch) | |
tree | 9999129b8f3ae0b5015086aadb3675586e81e0e6 /app/services | |
parent | 6d6000f61f7f611358a45efb3c557eb1e0a7e005 (diff) |
Refactor StatusReachFinder to handle followers and relays as well (#16051)
Diffstat (limited to 'app/services')
-rw-r--r-- | app/services/remove_status_service.rb | 34 |
1 files changed, 5 insertions, 29 deletions
diff --git a/app/services/remove_status_service.rb b/app/services/remove_status_service.rb index d642beeaa..2c2a26641 100644 --- a/app/services/remove_status_service.rb +++ b/app/services/remove_status_service.rb @@ -27,10 +27,7 @@ class RemoveStatusService < BaseService # original object being removed implicitly removes reblogs # of it. The Delete activity of the original is forwarded # separately. - if @account.local? && !@options[:original_removed] - remove_from_remote_followers - remove_from_remote_reach - end + remove_from_remote_reach if @account.local? && !@options[:original_removed] # Since reblogs don't mention anyone, don't get reblogged, # favourited and don't contain their own media attachments @@ -82,13 +79,10 @@ class RemoveStatusService < BaseService end def remove_from_remote_reach - return if @status.reblog? - - # People who got mentioned in the status, or who - # reblogged it from someone else might not follow - # the author and wouldn't normally receive the - # delete notification - so here, we explicitly - # send it to them + # Followers, relays, people who got mentioned in the status, + # or who reblogged it from someone else might not follow + # the author and wouldn't normally receive the delete + # notification - so here, we explicitly send it to them status_reach_finder = StatusReachFinder.new(@status) @@ -97,24 +91,6 @@ class RemoveStatusService < BaseService end end - def remove_from_remote_followers - ActivityPub::DeliveryWorker.push_bulk(@account.followers.inboxes) do |inbox_url| - [signed_activity_json, @account.id, inbox_url] - end - - relay! if relayable? - end - - def relayable? - @status.public_visibility? - end - - def relay! - ActivityPub::DeliveryWorker.push_bulk(Relay.enabled.pluck(:inbox_url)) do |inbox_url| - [signed_activity_json, @account.id, inbox_url] - end - end - def signed_activity_json @signed_activity_json ||= Oj.dump(serialize_payload(@status, @status.reblog? ? ActivityPub::UndoAnnounceSerializer : ActivityPub::DeleteSerializer, signer: @account)) end |