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