diff --git a/app/controllers/antennas_controller.rb b/app/controllers/antennas_controller.rb index 3f2bc3b908..43d8ee118b 100644 --- a/app/controllers/antennas_controller.rb +++ b/app/controllers/antennas_controller.rb @@ -59,7 +59,7 @@ class AntennasController < ApplicationController end def resource_params - params.require(:antenna).permit(:title, :list, :available, :expires_in, :with_media_only, :keywords_raw, :exclude_keywords_raw, :domains_raw, :exclude_domains_raw, :accounts_raw, :exclude_accounts_raw, :tags_raw, :exclude_tags_raw) + params.require(:antenna).permit(:title, :list, :available, :expires_in, :with_media_only, :ignore_reblog, :keywords_raw, :exclude_keywords_raw, :domains_raw, :exclude_domains_raw, :accounts_raw, :exclude_accounts_raw, :tags_raw, :exclude_tags_raw) end def thin_resource_params diff --git a/app/models/antenna.rb b/app/models/antenna.rb index dfdbf9b70c..c72c157388 100644 --- a/app/models/antenna.rb +++ b/app/models/antenna.rb @@ -23,6 +23,7 @@ # exclude_accounts :jsonb # exclude_tags :jsonb # stl :boolean default(FALSE), not null +# ignore_reblog :boolean default(FALSE), not null # class Antenna < ApplicationRecord include Expireable diff --git a/app/services/fan_out_on_write_service.rb b/app/services/fan_out_on_write_service.rb index aef69b3a9b..81b232558a 100644 --- a/app/services/fan_out_on_write_service.rb +++ b/app/services/fan_out_on_write_service.rb @@ -127,6 +127,7 @@ class FanOutOnWriteService < BaseService antennas = Antenna.availables antennas = antennas.left_joins(:antenna_domains).where(any_domains: true).or(Antenna.left_joins(:antenna_domains).where(antenna_domains: { name: domain })) antennas = antennas.where(with_media_only: false) unless @status.with_media? + antennas = antennas.where(ignore_reblog: false) unless @status.reblog? antennas = antennas.where(stl: true) if @account.dissubscribable antennas = Antenna.where(id: antennas.select(:id)) diff --git a/app/views/antennas/_antenna_fields.html.haml b/app/views/antennas/_antenna_fields.html.haml index f2a195a85b..fe67b3753e 100644 --- a/app/views/antennas/_antenna_fields.html.haml +++ b/app/views/antennas/_antenna_fields.html.haml @@ -55,3 +55,5 @@ %hr.spacer/ .fields-group = f.input :with_media_only, wrapper: :with_label, label: t('antennas.edit.with_media_only'), hint: false +.fields-group + = f.input :ignore_reblog, wrapper: :with_label, label: t('antennas.edit.ignore_reblog'), hint: false diff --git a/config/locales/en.yml b/config/locales/en.yml index ad1731782d..abc58be16e 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1012,6 +1012,7 @@ en: exclude_keywords_raw: Excluding keyword list exclude_tags_raw: Excluding hashtag list hint: 下のリストに、絞り込み条件・除外条件を入力します。条件は複数指定することができます。1行につき1つずつ入力してください。空行、コメント、重複を含めることはできません。 + ignore_reblog: Ignore BTs keywords_hint: キーワードは1つあたり最低2文字です。キーワードによる絞り込みを指定した場合、検索許可に対応しているサーバーからの投稿は、検索許可が「公開」以外のものは掲載されなくなります keywords_raw: Keyword list list: Destination list diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 472a89906c..e34fc413af 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -1009,6 +1009,7 @@ ja: exclude_keywords_raw: 除外するキーワード exclude_tags_raw: 除外するハッシュタグ hint: 下のリストに、絞り込み条件・除外条件を入力します。条件は複数指定することができます。1行につき1つずつ入力してください。空行、コメント、重複を含めることはできません。絞り込み条件(除外条件ではない)は最低1つ設定しなければいけません。 + ignore_reblog: ブーストを含めない keywords_hint: キーワードは1つあたり最低2文字です。キーワードによる絞り込みを指定した場合、検索許可に対応しているサーバーからの投稿は、検索許可が「公開」以外のものは掲載されなくなります keywords_raw: 絞り込むキーワード list: 投稿配置先リスト diff --git a/db/migrate/20230510033040_add_ignore_reblog_to_antennas.rb b/db/migrate/20230510033040_add_ignore_reblog_to_antennas.rb new file mode 100644 index 0000000000..f6667e45cf --- /dev/null +++ b/db/migrate/20230510033040_add_ignore_reblog_to_antennas.rb @@ -0,0 +1,10 @@ +# frozen_string_literal: true + +class AddIgnoreReblogToAntennas < ActiveRecord::Migration[6.1] + def change + safety_assured do + add_column :antennas, :ignore_reblog, :boolean, null: false, default: false + add_index :antennas, :ignore_reblog + end + end +end diff --git a/db/schema.rb b/db/schema.rb index 5453a4cef9..0bfdf33465 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -12,7 +12,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2023_05_10_004621) do +ActiveRecord::Schema.define(version: 2023_05_10_033040) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -308,12 +308,14 @@ ActiveRecord::Schema.define(version: 2023_05_10_004621) do t.jsonb "exclude_accounts" t.jsonb "exclude_tags" t.boolean "stl", default: false, null: false + t.boolean "ignore_reblog", default: false, null: false t.index ["account_id"], name: "index_antennas_on_account_id" t.index ["any_accounts"], name: "index_antennas_on_any_accounts" t.index ["any_domains"], name: "index_antennas_on_any_domains" t.index ["any_keywords"], name: "index_antennas_on_any_keywords" t.index ["any_tags"], name: "index_antennas_on_any_tags" t.index ["available"], name: "index_antennas_on_available" + t.index ["ignore_reblog"], name: "index_antennas_on_ignore_reblog" t.index ["list_id"], name: "index_antennas_on_list_id" t.index ["stl"], name: "index_antennas_on_stl" end @@ -1483,4 +1485,4 @@ ActiveRecord::Schema.define(version: 2023_05_10_004621) do end -#rubocop:enable all +# rubocop:enable all