2016-12-12 15:12:19 -05:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
class ThreadResolveWorker
|
|
|
|
include Sidekiq::Worker
|
2019-02-28 09:22:21 -05:00
|
|
|
include ExponentialBackoff
|
2016-12-12 15:12:19 -05:00
|
|
|
|
2017-11-11 10:49:04 -05:00
|
|
|
sidekiq_options queue: 'pull', retry: 3
|
|
|
|
|
2023-02-10 16:16:37 -05:00
|
|
|
def perform(child_status_id, parent_url, options = {})
|
2023-11-02 10:58:37 -04:00
|
|
|
child_status = Status.find(child_status_id)
|
|
|
|
return if child_status.in_reply_to_id.present?
|
|
|
|
|
|
|
|
parent_status = ActivityPub::TagManager.instance.uri_to_resource(parent_url, Status)
|
|
|
|
parent_status ||= FetchRemoteStatusService.new.call(parent_url, **options.deep_symbolize_keys)
|
2016-12-12 15:12:19 -05:00
|
|
|
|
|
|
|
return if parent_status.nil?
|
|
|
|
|
|
|
|
child_status.thread = parent_status
|
|
|
|
child_status.save!
|
2023-11-02 10:58:37 -04:00
|
|
|
|
|
|
|
DistributionWorker.perform_async(child_status_id, { 'skip_notifications' => true }) if child_status.within_realtime_window?
|
2021-04-26 12:56:45 -04:00
|
|
|
rescue ActiveRecord::RecordNotFound
|
|
|
|
true
|
2016-12-12 15:12:19 -05:00
|
|
|
end
|
|
|
|
end
|