diff options
author | Matt Jankowski <mjankowski@thoughtbot.com> | 2017-04-12 12:20:44 -0400 |
---|---|---|
committer | Eugen <eugen@zeonfederated.com> | 2017-04-12 18:20:44 +0200 |
commit | 7f0a865b05628fa82ac692ec9a21c418e30dac14 (patch) | |
tree | 9c6e38bf2a644bcf9aab6f1fdc7f275cb380891a /app | |
parent | 08fce0821706a3c84b70fd513eb75c0ad7014c04 (diff) |
Allow import/export of mutes list (#1541)
* Allow export of mutes list * Allow importing of mutes list * Refactor to use Settings::Exports::BaseController and DRY up exports code
Diffstat (limited to 'app')
-rw-r--r-- | app/controllers/settings/exports/base_controller.rb | 23 | ||||
-rw-r--r-- | app/controllers/settings/exports/blocked_accounts_controller.rb | 12 | ||||
-rw-r--r-- | app/controllers/settings/exports/following_accounts_controller.rb | 12 | ||||
-rw-r--r-- | app/controllers/settings/exports/muted_accounts_controller.rb | 13 | ||||
-rw-r--r-- | app/controllers/settings/exports_controller.rb | 1 | ||||
-rw-r--r-- | app/models/import.rb | 2 | ||||
-rw-r--r-- | app/views/settings/exports/show.html.haml | 4 | ||||
-rw-r--r-- | app/workers/import_worker.rb | 14 |
8 files changed, 64 insertions, 17 deletions
diff --git a/app/controllers/settings/exports/base_controller.rb b/app/controllers/settings/exports/base_controller.rb new file mode 100644 index 000000000..0b790959f --- /dev/null +++ b/app/controllers/settings/exports/base_controller.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +module Settings + module Exports + class BaseController < ApplicationController + before_action :authenticate_user! + + def index + export_data = Export.new(export_accounts).to_csv + + respond_to do |format| + format.csv { send_data export_data, filename: export_filename } + end + end + + private + + def export_filename + "#{controller_name}.csv" + end + end + end +end diff --git a/app/controllers/settings/exports/blocked_accounts_controller.rb b/app/controllers/settings/exports/blocked_accounts_controller.rb index 0bf8848b4..9c4bcaa53 100644 --- a/app/controllers/settings/exports/blocked_accounts_controller.rb +++ b/app/controllers/settings/exports/blocked_accounts_controller.rb @@ -2,15 +2,11 @@ module Settings module Exports - class BlockedAccountsController < ApplicationController - before_action :authenticate_user! + class BlockedAccountsController < BaseController + private - def index - export_data = Export.new(current_account.blocking).to_csv - - respond_to do |format| - format.csv { send_data export_data, filename: 'blocking.csv' } - end + def export_accounts + current_account.blocking end end end diff --git a/app/controllers/settings/exports/following_accounts_controller.rb b/app/controllers/settings/exports/following_accounts_controller.rb index a7f4344ca..8d06bcc95 100644 --- a/app/controllers/settings/exports/following_accounts_controller.rb +++ b/app/controllers/settings/exports/following_accounts_controller.rb @@ -2,15 +2,11 @@ module Settings module Exports - class FollowingAccountsController < ApplicationController - before_action :authenticate_user! + class FollowingAccountsController < BaseController + private - def index - export_data = Export.new(current_account.following).to_csv - - respond_to do |format| - format.csv { send_data export_data, filename: 'following.csv' } - end + def export_accounts + current_account.following end end end diff --git a/app/controllers/settings/exports/muted_accounts_controller.rb b/app/controllers/settings/exports/muted_accounts_controller.rb new file mode 100644 index 000000000..a77a9af6d --- /dev/null +++ b/app/controllers/settings/exports/muted_accounts_controller.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +module Settings + module Exports + class MutedAccountsController < BaseController + private + + def export_accounts + current_account.muting + end + end + end +end diff --git a/app/controllers/settings/exports_controller.rb b/app/controllers/settings/exports_controller.rb index e060f03d3..77dea3231 100644 --- a/app/controllers/settings/exports_controller.rb +++ b/app/controllers/settings/exports_controller.rb @@ -9,5 +9,6 @@ class Settings::ExportsController < ApplicationController @total_storage = current_account.media_attachments.sum(:file_file_size) @total_follows = current_account.following.count @total_blocks = current_account.blocking.count + @total_mutes = current_account.muting.count end end diff --git a/app/models/import.rb b/app/models/import.rb index 5384986d8..3013bc50e 100644 --- a/app/models/import.rb +++ b/app/models/import.rb @@ -3,7 +3,7 @@ class Import < ApplicationRecord self.inheritance_column = false - enum type: [:following, :blocking] + enum type: [:following, :blocking, :muting] belongs_to :account diff --git a/app/views/settings/exports/show.html.haml b/app/views/settings/exports/show.html.haml index 432a61b4a..51be40fb6 100644 --- a/app/views/settings/exports/show.html.haml +++ b/app/views/settings/exports/show.html.haml @@ -15,3 +15,7 @@ %th= t('exports.blocks') %td= @total_blocks %td= table_link_to 'download', t('exports.csv'), settings_exports_blocks_path(format: :csv) + %tr + %th= t('exports.mutes') + %td= @total_mutes + %td= table_link_to 'download', t('exports.csv'), settings_exports_mutes_path(format: :csv) diff --git a/app/workers/import_worker.rb b/app/workers/import_worker.rb index 60529c0e1..bb21468e7 100644 --- a/app/workers/import_worker.rb +++ b/app/workers/import_worker.rb @@ -16,6 +16,8 @@ class ImportWorker process_blocks when 'following' process_follows + when 'muting' + process_mutes end @import.destroy @@ -35,6 +37,18 @@ class ImportWorker CSV.new(import_contents).reject(&:blank?) end + def process_mutes + import_rows.each do |row| + begin + target_account = FollowRemoteAccountService.new.call(row.first) + next if target_account.nil? + MuteService.new.call(from_account, target_account) + rescue Goldfinger::Error, HTTP::Error, OpenSSL::SSL::SSLError + next + end + end + end + def process_blocks import_rows.each do |row| begin |