- # frozen_string_literal: true
-
- class RefollowWorker
- include Sidekiq::Worker
-
- sidekiq_options queue: 'pull', retry: false
-
- def perform(target_account_id)
- target_account = Account.find(target_account_id)
- return unless target_account.activitypub?
-
- target_account.passive_relationships.where(account: Account.where(domain: nil)).includes(:account).reorder(nil).find_each do |follow|
- reblogs = follow.show_reblogs?
- notify = follow.notify?
-
- # Locally unfollow remote account
- follower = follow.account
- follower.unfollow!(target_account)
-
- # Schedule re-follow
- begin
- FollowService.new.call(follower, target_account, reblogs: reblogs, notify: notify, bypass_limit: true)
- rescue Mastodon::NotPermittedError, ActiveRecord::RecordNotFound, Mastodon::UnexpectedResponseError, HTTP::Error, OpenSSL::SSL::SSLError
- next
- end
- end
- end
- end
|