Undo outgoing follows when suspending a remote account (#15188)
parent
c43f4cd3bb
commit
66832cbf33
|
@ -56,6 +56,7 @@ class DeleteAccountService < BaseService
|
|||
@options[:skip_activitypub] = true if @options[:skip_side_effects]
|
||||
|
||||
reject_follows!
|
||||
undo_follows!
|
||||
purge_user!
|
||||
purge_profile!
|
||||
purge_content!
|
||||
|
@ -79,6 +80,20 @@ class DeleteAccountService < BaseService
|
|||
end
|
||||
end
|
||||
|
||||
def undo_follows!
|
||||
return if @account.local? || !@account.activitypub? || @options[:skip_activitypub]
|
||||
|
||||
# When deleting a remote account, the account obviously doesn't
|
||||
# actually become deleted on its origin server, but following relationships
|
||||
# are severed on our end. Therefore, make the remote server aware that the
|
||||
# follow relationships are severed to avoid confusion and potential issues
|
||||
# if the remote account gets un-suspended.
|
||||
|
||||
ActivityPub::DeliveryWorker.push_bulk(Follow.where(target_account: @account)) do |follow|
|
||||
[Oj.dump(serialize_payload(follow, ActivityPub::UndoFollowSerializer)), follow.account_id, @account.inbox_url]
|
||||
end
|
||||
end
|
||||
|
||||
def purge_user!
|
||||
return if !@account.local? || @account.user.nil?
|
||||
|
||||
|
|
Reference in New Issue