mirror of
https://github.com/mastodon/mastodon
synced 2024-12-21 01:58:25 +09:00
33 lines
735 B
Ruby
33 lines
735 B
Ruby
|
# 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
|