diff --git a/app/controllers/settings/export_controller.rb b/app/controllers/settings/export_controller.rb new file mode 100644 index 00000000..6fa05b67 --- /dev/null +++ b/app/controllers/settings/export_controller.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +class Settings::ExportController < ApplicationController + before_action :authenticate_user! + + def index + if current_user.export_processing + flash[:info] = t(".info") + end + end + + def create + if current_user.can_export? + ExportWorker.perform_async(current_user.id) + flash[:success] = t(".success") + else + flash[:error] = t(".error") + end + + redirect_to settings_export_path + end +end diff --git a/app/controllers/user_controller.rb b/app/controllers/user_controller.rb index e475c1eb..1a690087 100644 --- a/app/controllers/user_controller.rb +++ b/app/controllers/user_controller.rb @@ -1,5 +1,5 @@ class UserController < ApplicationController - before_action :authenticate_user!, only: %w[data export begin_export edit_security update_2fa destroy_2fa reset_user_recovery_codes edit_mute edit_blocks] + before_action :authenticate_user!, only: %w[data edit_security update_2fa destroy_2fa reset_user_recovery_codes edit_mute edit_blocks] def show @user = User.where('LOWER(screen_name) = ?', params[:username].downcase).includes(:profile).first! @@ -69,23 +69,6 @@ class UserController < ApplicationController def data end - def export - if current_user.export_processing - flash[:info] = t(".info") - end - end - - def begin_export - if current_user.can_export? - ExportWorker.perform_async(current_user.id) - flash[:success] = t(".success") - else - flash[:error] = t(".error") - end - - redirect_to user_export_path - end - def edit_security if current_user.otp_module_disabled? current_user.otp_secret_key = User.otp_random_secret(25) diff --git a/config/routes.rb b/config/routes.rb index 7ba4b4e3..ed09e9d9 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -73,6 +73,9 @@ Rails.application.routes.draw do get :privacy, to: redirect('/settings/privacy/edit') resource :privacy, controller: :privacy, only: %i[edit update] + + get :export, to: 'export#index' + post :export, to: 'export#create' end resolve('Theme') { [:settings_theme] } # to make link_to/form_for work nicely when passing a `Theme` object to it, see also: https://api.rubyonrails.org/v6.1.5.1/classes/ActionDispatch/Routing/Mapper/CustomUrls.html#method-i-resolve resolve('Profile') { [:settings_profile] } @@ -96,8 +99,6 @@ Rails.application.routes.draw do end match '/settings/data', to: 'user#data', via: :get, as: :user_data - match '/settings/export', to: 'user#export', via: :get, as: :user_export - match '/settings/export', to: 'user#begin_export', via: :post, as: :begin_user_export namespace :ajax do match '/ask', to: 'question#create', via: :post, as: :ask