From 8eda40cfb39b69038df399ae18658a8cb4a3edba Mon Sep 17 00:00:00 2001 From: Essem Date: Sun, 12 Nov 2023 20:59:36 -0600 Subject: [PATCH] Refactor react services --- app/services/react_service.rb | 31 +++++++++++++++++++++++-------- app/services/unreact_service.rb | 20 ++++++++++++-------- 2 files changed, 35 insertions(+), 16 deletions(-) diff --git a/app/services/react_service.rb b/app/services/react_service.rb index de2fd1de9c..cfc3f99a78 100644 --- a/app/services/react_service.rb +++ b/app/services/react_service.rb @@ -16,16 +16,31 @@ class ReactService < BaseService reaction = StatusReaction.create!(account: account, status: status, name: name, custom_emoji: custom_emoji) - json = Oj.dump(serialize_payload(reaction, ActivityPub::EmojiReactionSerializer)) - if status.account.local? - NotifyService.new.call(status.account, :reaction, reaction) - ActivityPub::RawDistributionWorker.perform_async(json, status.account.id) - else - ActivityPub::DeliveryWorker.perform_async(json, reaction.account_id, status.account.inbox_url) - end + Trends.statuses.register(status) - ActivityTracker.increment('activity:interactions') + create_notification(reaction) + increment_statistics reaction end + + private + + def create_notification(reaction) + status = reaction.status + + if status.account.local? + LocalNotificationWorker.perform_async(status.account_id, reaction.id, 'StatusReaction', 'reaction') + elsif status.account.activitypub? + ActivityPub::DeliveryWorker.perform_async(build_json(reaction), reaction.account_id, status.account.inbox_url) + end + end + + def increment_statistics + ActivityTracker.increment('activity:interactions') + end + + def build_json(reaction) + Oj.dump(serialize_payload(reaction, ActivityPub::EmojiReactionSerializer)) + end end diff --git a/app/services/unreact_service.rb b/app/services/unreact_service.rb index 7c1b32e94f..49d232e931 100644 --- a/app/services/unreact_service.rb +++ b/app/services/unreact_service.rb @@ -10,14 +10,18 @@ class UnreactService < BaseService return if reaction.nil? reaction.destroy! - - json = Oj.dump(serialize_payload(reaction, ActivityPub::UndoEmojiReactionSerializer)) - if status.account.local? - ActivityPub::RawDistributionWorker.perform_async(json, status.account.id) - else - ActivityPub::DeliveryWorker.perform_async(json, reaction.account_id, status.account.inbox_url) - end - + create_notification(reaction) if !status.account.local? && status.account.activitypub? reaction end + + private + + def create_notification(reaction) + status = reaction.status + ActivityPub::DeliveryWorker.perform_async(build_json(reaction), reaction.account_id, status.account.inbox_url) + end + + def build_json(reaction) + Oj.dump(serialize_payload(reaction, ActivityPub::UndoEmojiReactionSerializer)) + end end