From d8725ea55472f18102e14d02bab1d790e40cc075 Mon Sep 17 00:00:00 2001 From: Evan Summers Date: Thu, 7 Aug 2025 22:28:58 +0200 Subject: [PATCH] Import seems to work! --- app/controllers/settings/imports_controller.rb | 2 ++ app/models/form/import.rb | 12 ++++++++++-- app/services/bulk_import_row_service.rb | 7 +++++++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/app/controllers/settings/imports_controller.rb b/app/controllers/settings/imports_controller.rb index eee4cc7feb5..a53e4ca3740 100644 --- a/app/controllers/settings/imports_controller.rb +++ b/app/controllers/settings/imports_controller.rb @@ -57,6 +57,8 @@ class Settings::ImportsController < Settings::BaseController csv << [row.data['uri']] when :lists csv << [row.data['list_name'], row.data['acct']] + when :filters + csv << [row.data['title'], row.data['context'], row.data['keywords'], row.data['action'], row.data['expires_at']] end end end diff --git a/app/models/form/import.rb b/app/models/form/import.rb index f5c812be587..914cd59f8c0 100644 --- a/app/models/form/import.rb +++ b/app/models/form/import.rb @@ -33,6 +33,13 @@ class Form::Import '#domain' => 'domain', '#uri' => 'uri', 'List name' => 'list_name', + + # Filters + 'Title' => 'title', + 'Context' => 'context', + 'Keywords' => 'keywords', + 'Action' => 'action', + 'Expire after' => 'expires_at', }.freeze class EmptyFileError < StandardError; end @@ -114,10 +121,11 @@ class Form::Import return @csv_data if defined?(@csv_data) csv_converter = lambda do |field, field_info| - if :type == :filters + case type.to_sym + when :filters case field_info.header when 'Context', 'Keywords' - field&.split(',')&.map(&:strip)&.presence + Oj.load(field) when 'Expire after' field.blank? ? nil : Time.zone.parse(field) else diff --git a/app/services/bulk_import_row_service.rb b/app/services/bulk_import_row_service.rb index 26909dfe04f..dd6a540aed2 100644 --- a/app/services/bulk_import_row_service.rb +++ b/app/services/bulk_import_row_service.rb @@ -39,6 +39,13 @@ class BulkImportRowService FollowService.new.call(@account, @target_account) unless @account.id == @target_account.id list.accounts << @target_account + when :filters + filter = @account.custom_filters.find_or_initialize_by(title: @data['title']) + filter.context = @data['context'] + filter.keywords = @data['keywords'].map { |keyword| CustomFilterKeyword.new(keyword: keyword) } + filter.action = @data['action'].to_sym + filter.expires_at = @data['expires_at'] + filter.save! end true