1
0
Fork 0
forked from gitea/nas

Make antenna able to insert home

This commit is contained in:
KMY 2023-05-09 17:08:54 +09:00
parent 7b82dbe135
commit 5c418472e7
6 changed files with 34 additions and 7 deletions

View file

@ -29,7 +29,7 @@ class Antenna < ApplicationRecord
has_many :antenna_accounts, inverse_of: :antenna, dependent: :destroy has_many :antenna_accounts, inverse_of: :antenna, dependent: :destroy
belongs_to :account belongs_to :account
belongs_to :list belongs_to :list, optional: true
scope :all_keywords, -> { where(any_keywords: true) } scope :all_keywords, -> { where(any_keywords: true) }
scope :all_domains, -> { where(any_domains: true) } scope :all_domains, -> { where(any_domains: true) }
@ -40,7 +40,7 @@ class Antenna < ApplicationRecord
validate :list_owner validate :list_owner
def list_owner def list_owner
raise Mastodon::ValidationError, I18n.t('antennas.errors.invalid_list_owner') if list.account != account raise Mastodon::ValidationError, I18n.t('antennas.errors.invalid_list_owner') if list.present? && list.account != account
end end
def enabled? def enabled?

View file

@ -118,6 +118,7 @@ class FanOutOnWriteService < BaseService
def deliver_to_antennas! def deliver_to_antennas!
lists = [] lists = []
homes = []
tag_ids = @status.tags.pluck(:id) tag_ids = @status.tags.pluck(:id)
domain = @account.domain || Rails.configuration.x.local_domain domain = @account.domain || Rails.configuration.x.local_domain
@ -141,16 +142,28 @@ class FanOutOnWriteService < BaseService
next if antenna.exclude_accounts&.include?(@status.account_id) next if antenna.exclude_accounts&.include?(@status.account_id)
next if antenna.exclude_domains&.include?(domain) next if antenna.exclude_domains&.include?(domain)
next if antenna.exclude_tags&.any? { |tag_id| tag_ids.include?(tag_id) } next if antenna.exclude_tags&.any? { |tag_id| tag_ids.include?(tag_id) }
if antenna.list_id.zero?
homes << antenna.account_id
else
lists << antenna.list_id lists << antenna.list_id
end end
end end
end
lists = lists.uniq lists = lists.uniq
homes = homes.uniq
if lists.any? if lists.any?
FeedInsertWorker.push_bulk(lists) do |list| FeedInsertWorker.push_bulk(lists) do |list|
[@status.id, list, 'list', { 'update' => update? }] [@status.id, list, 'list', { 'update' => update? }]
end end
end end
if homes.any?
FeedInsertWorker.push_bulk(homes) do |home|
[@status.id, home, 'home', { 'update' => update? }]
end
end
end end
def deliver_to_mentioned_followers! def deliver_to_mentioned_followers!

View file

@ -13,7 +13,7 @@
= t('antennas.index.expires_in', distance: distance_of_time_in_words_to_now(antenna.expires_at)) = t('antennas.index.expires_in', distance: distance_of_time_in_words_to_now(antenna.expires_at))
.listname .listname
= antenna.list.title = antenna.list&.title || '[Insert to Home]'
.filters-list__item__permissions .filters-list__item__permissions
%ul.permissions-list %ul.permissions-list

View file

@ -9,7 +9,7 @@
.fields-row .fields-row
.fields-group.fields-row__column.fields-row__column-6 .fields-group.fields-row__column.fields-row__column-6
= f.input :list, collection: lists, wrapper: :with_label, label_method: lambda { |list| list.title }, label: t('antennas.edit.list'), selected: f.object.list&.id, hint: false = f.input :list, collection: lists, wrapper: :with_label, label_method: lambda { |list| list.title }, label: t('antennas.edit.list'), selected: f.object.list&.id, hint: false, include_blank: '[Insert to Home]'
.fields-group.fields-row__column.fields-row__column-6 .fields-group.fields-row__column.fields-row__column-6
= f.input :available, wrapper: :with_label, label: t('antennas.edit.available'), hint: false = f.input :available, wrapper: :with_label, label: t('antennas.edit.available'), hint: false

View file

@ -0,0 +1,15 @@
# frozen_string_literal: true
class ChangeAntennasListToNullable < ActiveRecord::Migration[6.1]
def up
safety_assured do
remove_foreign_key :antennas, :lists
end
end
def down
safety_assured do
add_foreign_key :antennas, :lists
end
end
end

View file

@ -10,7 +10,7 @@
# #
# It's strongly recommended that you check this file into your version control system. # It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 2023_04_30_110057) do ActiveRecord::Schema.define(version: 2023_05_09_045358) do
# These are extensions that must be enabled in order to support this database # These are extensions that must be enabled in order to support this database
enable_extension "plpgsql" enable_extension "plpgsql"
@ -1256,7 +1256,6 @@ ActiveRecord::Schema.define(version: 2023_04_30_110057) do
add_foreign_key "antenna_tags", "antennas", on_delete: :cascade add_foreign_key "antenna_tags", "antennas", on_delete: :cascade
add_foreign_key "antenna_tags", "tags", on_delete: :cascade add_foreign_key "antenna_tags", "tags", on_delete: :cascade
add_foreign_key "antennas", "accounts", on_delete: :cascade add_foreign_key "antennas", "accounts", on_delete: :cascade
add_foreign_key "antennas", "lists", on_delete: :cascade
add_foreign_key "appeals", "account_warnings", on_delete: :cascade add_foreign_key "appeals", "account_warnings", on_delete: :cascade
add_foreign_key "appeals", "accounts", column: "approved_by_account_id", on_delete: :nullify add_foreign_key "appeals", "accounts", column: "approved_by_account_id", on_delete: :nullify
add_foreign_key "appeals", "accounts", column: "rejected_by_account_id", on_delete: :nullify add_foreign_key "appeals", "accounts", column: "rejected_by_account_id", on_delete: :nullify