Fix too many forwards (#5854)
* Avoid sending explicit Undo->Announce when original deleted * Do not forward a reply back to the server that sent it * Deduplicate inboxes of rebloggers' followers for delete forwarding * Adjust test * Fix wrong class, bad SQL, wrong variable, outdated comment
This commit is contained in:
parent
dc1ebd45a3
commit
85e97ecab6
6 changed files with 27 additions and 15 deletions
|
@ -3,7 +3,7 @@
|
|||
class RemoveStatusService < BaseService
|
||||
include StreamEntryRenderer
|
||||
|
||||
def call(status)
|
||||
def call(status, options = {})
|
||||
@payload = Oj.dump(event: :delete, payload: status.id.to_s)
|
||||
@status = status
|
||||
@account = status.account
|
||||
|
@ -11,6 +11,7 @@ class RemoveStatusService < BaseService
|
|||
@mentions = status.mentions.includes(:account).to_a
|
||||
@reblogs = status.reblogs.to_a
|
||||
@stream_entry = status.stream_entry
|
||||
@options = options
|
||||
|
||||
remove_from_self if status.account.local?
|
||||
remove_from_followers
|
||||
|
@ -22,7 +23,12 @@ class RemoveStatusService < BaseService
|
|||
|
||||
@status.destroy!
|
||||
|
||||
return unless @account.local?
|
||||
# There is no reason to send out Undo activities when the
|
||||
# cause is that the original object has been removed, since
|
||||
# original object being removed implicitly removes reblogs
|
||||
# of it. The Delete activity of the original is forwarded
|
||||
# separately.
|
||||
return if !@account.local? || @options[:original_removed]
|
||||
|
||||
remove_from_remote_followers
|
||||
remove_from_remote_affected
|
||||
|
@ -104,7 +110,7 @@ class RemoveStatusService < BaseService
|
|||
# without us being able to do all the fancy stuff
|
||||
|
||||
@reblogs.each do |reblog|
|
||||
RemoveStatusService.new.call(reblog)
|
||||
RemoveStatusService.new.call(reblog, original_removed: true)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue