authorize-follow-requests-after-unlocking (#4658)
parent
dc19078b59
commit
d8f136cb8b
@ -0,0 +1,21 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class UpdateAccountService < BaseService
|
||||
def call(account, params, raise_error: false)
|
||||
was_locked = account.locked
|
||||
update_method = raise_error ? :update! : :update
|
||||
account.send(update_method, params).tap do |ret|
|
||||
next unless ret
|
||||
authorize_all_follow_requests(account) if was_locked && !account.locked
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def authorize_all_follow_requests(account)
|
||||
follow_requests = FollowRequest.where(target_account: account)
|
||||
AuthorizeFollowWorker.push_bulk(follow_requests) do |req|
|
||||
[req.account_id, req.target_account_id]
|
||||
end
|
||||
end
|
||||
end
|
@ -0,0 +1,14 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class AuthorizeFollowWorker
|
||||
include Sidekiq::Worker
|
||||
|
||||
def perform(source_account_id, target_account_id)
|
||||
source_account = Account.find(source_account_id)
|
||||
target_account = Account.find(target_account_id)
|
||||
|
||||
AuthorizeFollowService.new.call(source_account, target_account)
|
||||
rescue ActiveRecord::RecordNotFound
|
||||
true
|
||||
end
|
||||
end
|
Loading…
Reference in new issue