From a39b8cb90e444ac88f7ab6e65c2df04a177207a3 Mon Sep 17 00:00:00 2001 From: KMY Date: Fri, 15 Sep 2023 12:27:06 +0900 Subject: [PATCH] Refactor status reference flag --- app/lib/activitypub/activity/create.rb | 5 +---- app/services/activitypub/process_status_update_service.rb | 5 +---- app/services/post_status_service.rb | 6 +----- app/services/process_references_service.rb | 7 +++++++ app/services/update_status_service.rb | 5 +---- 5 files changed, 11 insertions(+), 17 deletions(-) diff --git a/app/lib/activitypub/activity/create.rb b/app/lib/activitypub/activity/create.rb index 1739a5ff26..f991faa6a6 100644 --- a/app/lib/activitypub/activity/create.rb +++ b/app/lib/activitypub/activity/create.rb @@ -494,10 +494,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity quote = @object['quote'] || @object['quoteUrl'] || @object['quoteURL'] || @object['_misskey_quote'] references << quote if quote - return unless ProcessReferencesService.need_process?(@status, [], references) - - Rails.cache.write("status_reference:#{@status.id}", true, expires_in: 10.minutes) - ProcessReferencesWorker.perform_async(@status.id, [], references) + ProcessReferencesService.perform_worker_async(@status, [], references) end def join_group! diff --git a/app/services/activitypub/process_status_update_service.rb b/app/services/activitypub/process_status_update_service.rb index a043d9e00c..7ee444dea4 100644 --- a/app/services/activitypub/process_status_update_service.rb +++ b/app/services/activitypub/process_status_update_service.rb @@ -255,10 +255,7 @@ class ActivityPub::ProcessStatusUpdateService < BaseService quote = @json['quote'] || @json['quoteUrl'] || @json['quoteURL'] || @json['_misskey_quote'] references << quote if quote - return unless ProcessReferencesService.need_process?(@status, [], references) - - Rails.cache.write("status_reference:#{@status.id}", true, expires_in: 10.minutes) - ProcessReferencesWorker.perform_async(@status.id, [], references) + ProcessReferencesService.perform_worker_async(@status, [], references) end def expected_type? diff --git a/app/services/post_status_service.rb b/app/services/post_status_service.rb index 291138ee36..e8725528d9 100644 --- a/app/services/post_status_service.rb +++ b/app/services/post_status_service.rb @@ -186,13 +186,9 @@ class PostStatusService < BaseService def postprocess_status! @account.user.update!(settings_attributes: { default_privacy: @options[:visibility] }) if @account.user&.setting_stay_privacy && !@status.reply? && %i(public public_unlisted login unlisted private).include?(@status.visibility.to_sym) && @status.visibility.to_s != @account.user&.setting_default_privacy && !@dtl - if ProcessReferencesService.need_process?(@status, @reference_ids, []) - Rails.cache.write("status_reference:#{@status.id}", true, expires_in: 10.minutes) - ProcessReferencesWorker.perform_async(@status.id, @reference_ids, []) - end - process_hashtags_service.call(@status) Trends.tags.register(@status) + ProcessReferencesService.perform_worker_async(@status, @reference_ids, []) LinkCrawlWorker.perform_async(@status.id) DistributionWorker.perform_async(@status.id) ActivityPub::DistributionWorker.perform_async(@status.id) diff --git a/app/services/process_references_service.rb b/app/services/process_references_service.rb index 54edd4ff6b..bd2b3dd42c 100644 --- a/app/services/process_references_service.rb +++ b/app/services/process_references_service.rb @@ -33,6 +33,13 @@ class ProcessReferencesService < BaseService reference_parameters.any? || (urls || []).any? || FormattingHelper.extract_status_plain_text(status).scan(REFURL_EXP).pluck(3).uniq.any? end + def self.perform_worker_async(status, reference_parameters, urls) + return unless need_process?(status, reference_parameters, urls) + + Rails.cache.write("status_reference:#{status.id}", true, expires_in: 10.minutes) + ProcessReferencesWorker.perform_async(status.id, reference_parameters, urls) + end + private def references diff --git a/app/services/update_status_service.rb b/app/services/update_status_service.rb index e6d4d4e1f4..8d99ebdd3d 100644 --- a/app/services/update_status_service.rb +++ b/app/services/update_status_service.rb @@ -162,10 +162,7 @@ class UpdateStatusService < BaseService def update_references! reference_ids = (@options[:status_reference_ids] || []).map(&:to_i).filter(&:positive?) - return unless ProcessReferencesService.need_process?(@status, reference_ids, []) - - Rails.cache.write("status_reference:#{@status.id}", true, expires_in: 10.minutes) - ProcessReferencesWorker.perform_async(@status.id, reference_ids, []) + ProcessReferencesService.perform_worker_async(@status, reference_ids, []) end def update_metadata!