about summary refs log tree commit diff
path: root/app/services/follow_service.rb
diff options
context:
space:
mode:
authorThibG <thib@sitedethib.com>2019-11-07 08:05:07 +0100
committerEugen Rochko <eugen@zeonfederated.com>2019-11-07 09:05:07 +0200
commit66c1fe0495b7e4728ad776e9c41a70c180640ea5 (patch)
tree857ede9138d9fe398211f9c3f66f3b8ce77950e4 /app/services/follow_service.rb
parent699427777a52af1fbc3d2a12c1be9f9f081b17fd (diff)
Fix various issues with account migration (#12301)
* Fix being able to follow oneself by moving to an account that was following the old one

* Add specs

* Add spec to catch MoveWorker issue with local followers following both accounts

* Fix move worker breaking when a local account follows both source and target accounts

* Fix migration from remote to local account not sending Undo Follow

* Fix show_reblogs not being preserved for moved account's followers
Diffstat (limited to 'app/services/follow_service.rb')
-rw-r--r--app/services/follow_service.rb4
1 files changed, 2 insertions, 2 deletions
diff --git a/app/services/follow_service.rb b/app/services/follow_service.rb
index 1941c2e2d..dc47804c0 100644
--- a/app/services/follow_service.rb
+++ b/app/services/follow_service.rb
@@ -8,7 +8,7 @@ class FollowService < BaseService
   # @param [Account] source_account From which to follow
   # @param [String, Account] uri User URI to follow in the form of username@domain (or account record)
   # @param [true, false, nil] reblogs Whether or not to show reblogs, defaults to true
-  def call(source_account, target_account, reblogs: nil)
+  def call(source_account, target_account, reblogs: nil, bypass_locked: false)
     reblogs = true if reblogs.nil?
     target_account = ResolveAccountService.new.call(target_account, skip_webfinger: true)
 
@@ -30,7 +30,7 @@ class FollowService < BaseService
 
     ActivityTracker.increment('activity:interactions')
 
-    if target_account.locked? || source_account.silenced? || target_account.activitypub?
+    if (target_account.locked? && !bypass_locked) || source_account.silenced? || target_account.activitypub?
       request_follow(source_account, target_account, reblogs: reblogs)
     elsif target_account.local?
       direct_follow(source_account, target_account, reblogs: reblogs)