about summary refs log tree commit diff
path: root/app/workers/local_notification_worker.rb
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2018-11-08 21:05:42 +0100
committerGitHub <noreply@github.com>2018-11-08 21:05:42 +0100
commit6d59dfa15d873da75c731b79367ab6b3d1b2f5a5 (patch)
tree4dda07058520c878354b95ab736ec9f6a36f4d03 /app/workers/local_notification_worker.rb
parent9cfd610484541c14bcde3c368a158b9b5d2a6499 (diff)
Optimize the process of following someone (#9220)
* Eliminate extra accounts select query from FollowService

* Optimistically update follow state in web UI and hide loading bar

Fix #6205

* Asynchronize NotifyService in FollowService

And fix failing test

* Skip Webfinger resolve routine when called from FollowService if possible

If an account is ActivityPub, then webfinger re-resolving is not necessary
when called from FollowService. Improve options of ResolveAccountService
Diffstat (limited to 'app/workers/local_notification_worker.rb')
-rw-r--r--app/workers/local_notification_worker.rb13
1 files changed, 10 insertions, 3 deletions
diff --git a/app/workers/local_notification_worker.rb b/app/workers/local_notification_worker.rb
index 748270563..48635e498 100644
--- a/app/workers/local_notification_worker.rb
+++ b/app/workers/local_notification_worker.rb
@@ -3,9 +3,16 @@
 class LocalNotificationWorker
   include Sidekiq::Worker
 
-  def perform(mention_id)
-    mention = Mention.find(mention_id)
-    NotifyService.new.call(mention.account, mention)
+  def perform(receiver_account_id, activity_id = nil, activity_class_name = nil)
+    if activity_id.nil? && activity_class_name.nil?
+      activity = Mention.find(receiver_account_id)
+      receiver = activity.account
+    else
+      receiver = Account.find(receiver_account_id)
+      activity = activity_class_name.constantize.find(activity_id)
+    end
+
+    NotifyService.new.call(receiver, activity)
   rescue ActiveRecord::RecordNotFound
     true
   end