about summary refs log tree commit diff
path: root/app/services
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2019-09-29 16:23:13 +0200
committerGitHub <noreply@github.com>2019-09-29 16:23:13 +0200
commit368a87755b4b12c37deb415e10e03c709012f698 (patch)
treef76c97df7f3ea63122af24f6181dd5d9eb6f1c56 /app/services
parentbd9685f7980838ecc675af20cf52ef1e686d98d6 (diff)
Fix account migration not affecting followers on origin server (#11980)
Diffstat (limited to 'app/services')
-rw-r--r--app/services/move_service.rb32
1 files changed, 32 insertions, 0 deletions
diff --git a/app/services/move_service.rb b/app/services/move_service.rb
new file mode 100644
index 000000000..da0c62c4e
--- /dev/null
+++ b/app/services/move_service.rb
@@ -0,0 +1,32 @@
+# frozen_string_literal: true
+
+class MoveService < BaseService
+  def call(migration)
+    @migration      = migration
+    @source_account = migration.account
+    @target_account = migration.target_account
+
+    update_redirect!
+    process_local_relationships!
+    distribute_update!
+    distribute_move!
+  end
+
+  private
+
+  def update_redirect!
+    @source_account.update!(moved_to_account: @target_account)
+  end
+
+  def process_local_relationships!
+    MoveWorker.perform_async(@source_account.id, @target_account.id)
+  end
+
+  def distribute_update!
+    ActivityPub::UpdateDistributionWorker.perform_async(@source_account.id)
+  end
+
+  def distribute_move!
+    ActivityPub::MoveDistributionWorker.perform_async(@migration.id)
+  end
+end