nas/app/services/enable_follow_requests_service.rb
KMY(雪あすか) dfc9f35d71
Add: #586 保留中のリモートアカウントからのフォローが飛んできた場合に記録する (#590)
* Add: #586 保留中のリモートアカウントからのフォローが飛んできた場合に記録する

* 本家に戻す処理を修正

* Fix test

* Fix worker link

* Fix test

* リモートアカウント拒否時に既存のリクエストを削除
2024-02-18 10:48:48 +09:00

32 lines
1,011 B
Ruby

# frozen_string_literal: true
class EnableFollowRequestsService < BaseService
include Payloadable
include FollowHelper
def call(account)
@account = account
PendingFollowRequest.transaction do
PendingFollowRequest.where(account: account).find_each do |follow_request|
approve_follow!(follow_request)
end
end
end
private
def approve_follow!(pending)
follow_request = FollowRequest.create!(account: @account, target_account: pending.target_account, uri: pending.uri)
pending.destroy!
target_account = follow_request.target_account
if request_pending_follow?(@account, target_account)
LocalNotificationWorker.perform_async(target_account.id, follow_request.id, 'FollowRequest', 'follow_request')
else
AuthorizeFollowService.new.call(@account, target_account)
LocalNotificationWorker.perform_async(target_account.id, ::Follow.find_by(account: @account, target_account: target_account).id, 'Follow', 'follow')
end
end
end