Add UI for setting up account migration (#5832)

This commit is contained in:
Eugen Rochko
2017-11-27 22:47:06 +01:00
committed by GitHub
parent ff78c1177a
commit 706e534455
7 changed files with 90 additions and 1 deletions

View File

@ -0,0 +1,32 @@
# frozen_string_literal: true
class Settings::MigrationsController < ApplicationController
layout 'admin'
before_action :authenticate_user!
def show
@migration = Form::Migration.new(account: current_account.moved_to_account)
end
def update
@migration = Form::Migration.new(resource_params)
if @migration.valid?
if current_account.moved_to_account_id != @migration.account&.id
current_account.update!(moved_to_account: @migration.account)
ActivityPub::UpdateDistributionWorker.perform_async(@account.id)
end
redirect_to settings_migration_path
else
render :show
end
end
private
def resource_params
params.require(:migration).permit(:acct)
end
end

View File

@ -0,0 +1,27 @@
# frozen_string_literal: true
class Form::Migration
include ActiveModel::Validations
attr_accessor :acct, :account
validates :acct, presence: true
def initialize(attrs = {})
@account = attrs[:account]
@acct = attrs[:account].acct unless @account.nil?
@acct = attrs[:acct].gsub(/\A@/, '').strip unless attrs[:acct].nil?
end
def valid?
return false unless super
set_account
errors.empty?
end
private
def set_account
self.account = ResolveRemoteAccountService.new.call(acct) if account.nil? && acct.present?
end
end

View File

@ -0,0 +1,17 @@
- content_for :page_title do
= t('settings.migrate')
= simple_form_for @migration, as: :migration, url: settings_migration_path, html: { method: :put } do |f|
- if @migration.account
%p.hint= t('migrations.currently_redirecting')
.fields-group
= render partial: 'authorize_follows/card', locals: { account: @migration.account }
= render 'shared/error_messages', object: @migration
.fields-group
= f.input :acct, placeholder: t('migrations.acct')
.actions
= f.button :button, t('migrations.proceed'), type: :submit, class: 'negative'

View File

@ -21,3 +21,8 @@
.actions
= f.button :button, t('generic.save_changes'), type: :submit
%hr/
%h6= t('auth.migrate_account')
%p.muted-hint= t('auth.migrate_account_html', path: settings_migration_path)