authorize-follow-requests-after-unlocking (#4658)
parent
3ac7b353f8
commit
649a20ab46
@ -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