def delete_person
lock_or_return("delete_in_progress:#{@account.id}") do
- DeleteAccountService.new.call(@account, reserve_username: false)
+ DeleteAccountService.new.call(@account, reserve_username: false, skip_activitypub: true)
end
end
# @option [Boolean] :reserve_email Keep user record. Only applicable for local accounts
# @option [Boolean] :reserve_username Keep account record
# @option [Boolean] :skip_side_effects Side effects are ActivityPub and streaming API payloads
+ # @option [Boolean] :skip_activitypub Skip sending ActivityPub payloads. Implied by :skip_side_effects
# @option [Time] :suspended_at Only applicable when :reserve_username is true
def call(account, **options)
@account = account
@options[:skip_side_effects] = true
end
+ @options[:skip_activitypub] = true if @options[:skip_side_effects]
+
reject_follows!
purge_user!
purge_profile!
private
def reject_follows!
- return if @account.local? || !@account.activitypub?
+ 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, i.e. unlike a
end
def queue_deletion!
- AccountDeletionWorker.perform_async(@account.id, reserve_username: false)
+ AccountDeletionWorker.perform_async(@account.id, reserve_username: false, skip_activitypub: true)
end
def lock_options
def perform(account_id, options = {})
reserve_username = options.with_indifferent_access.fetch(:reserve_username, true)
- DeleteAccountService.new.call(Account.find(account_id), reserve_username: reserve_username, reserve_email: false)
+ skip_activitypub = options.with_indifferent_access.fetch(:skip_activitypub, false)
+ DeleteAccountService.new.call(Account.find(account_id), reserve_username: reserve_username, skip_activitypub: skip_activitypub, reserve_email: false)
rescue ActiveRecord::RecordNotFound
true
end