about summary refs log tree commit diff
path: root/app/services/unfollow_service.rb
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2019-09-17 08:44:45 +0200
committerGitHub <noreply@github.com>2019-09-17 08:44:45 +0200
commit38dc51b2d68e3e03f429419f7318e868fa24c49d (patch)
tree02012b8582eb2eb7acf8fe66cc953bd903fdf135 /app/services/unfollow_service.rb
parentc21386cff5ff6d86d8887e4a5dde1cf910ab84a0 (diff)
Fix Move handler queuing jobs that will fail if account is suspended (#11864)
Don't put Move handler on cooldown if it didn't run. Skip unmerging
from timelines to save unnecessary work.
Diffstat (limited to 'app/services/unfollow_service.rb')
-rw-r--r--app/services/unfollow_service.rb11
1 files changed, 9 insertions, 2 deletions
diff --git a/app/services/unfollow_service.rb b/app/services/unfollow_service.rb
index b7033d7eb..151f3674f 100644
--- a/app/services/unfollow_service.rb
+++ b/app/services/unfollow_service.rb
@@ -6,9 +6,12 @@ class UnfollowService < BaseService
   # Unfollow and notify the remote user
   # @param [Account] source_account Where to unfollow from
   # @param [Account] target_account Which to unfollow
-  def call(source_account, target_account)
+  # @param [Hash] options
+  # @option [Boolean] :skip_unmerge
+  def call(source_account, target_account, options = {})
     @source_account = source_account
     @target_account = target_account
+    @options        = options
 
     unfollow! || undo_follow_request!
   end
@@ -21,9 +24,11 @@ class UnfollowService < BaseService
     return unless follow
 
     follow.destroy!
+
     create_notification(follow) if !@target_account.local? && @target_account.activitypub?
     create_reject_notification(follow) if @target_account.local? && !@source_account.local? && @source_account.activitypub?
-    UnmergeWorker.perform_async(@target_account.id, @source_account.id)
+    UnmergeWorker.perform_async(@target_account.id, @source_account.id) unless @options[:skip_unmerge]
+
     follow
   end
 
@@ -33,7 +38,9 @@ class UnfollowService < BaseService
     return unless follow_request
 
     follow_request.destroy!
+
     create_notification(follow_request) unless @target_account.local?
+
     follow_request
   end