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