diff --git a/app/javascript/styles/mastodon/admin.scss b/app/javascript/styles/mastodon/admin.scss index c92191ea21..1030836fdc 100644 --- a/app/javascript/styles/mastodon/admin.scss +++ b/app/javascript/styles/mastodon/admin.scss @@ -1067,6 +1067,13 @@ a.name-tag, margin-bottom: 10px; } + .listname { + color: $dark-text-color; + font-weight: bold; + font-size: 14px; + margin-left: 16px; + } + .expiration { font-size: 13px; } diff --git a/app/models/antenna.rb b/app/models/antenna.rb index 6336b8af71..1c14a8a180 100644 --- a/app/models/antenna.rb +++ b/app/models/antenna.rb @@ -34,7 +34,7 @@ class Antenna < ApplicationRecord scope :availables, -> { where(available: true).where(Arel.sql('any_keywords = FALSE OR any_domains = FALSE OR any_accounts = FALSE OR any_tags = FALSE')) } def enabled? - available && !expires? && !(any_keywords && any_domains && any_accounts && any_tags) + available && !expired? && !(any_keywords && any_domains && any_accounts && any_tags) end def expires_in @@ -44,10 +44,6 @@ class Antenna < ApplicationRecord [30.minutes, 1.hour, 6.hours, 12.hours, 1.day, 1.week].find { |expires_in| expires_in.from_now >= expires_at } end - def expires? - expires_at.present? && expires_at < Time.now.utc - end - def context context = [] context << 'domain' if !any_domains @@ -73,7 +69,7 @@ class Antenna < ApplicationRecord end def keywords_raw=(raw) - keywords = raw.split(/\R/).filter { |r| r.present? }.uniq + keywords = raw.split(/\R/).filter { |r| r.present? && r.length >= 2 }.uniq self[:keywords] = keywords self[:any_keywords] = !keywords.any? && !exclude_keywords&.any? end diff --git a/app/services/delete_account_service.rb b/app/services/delete_account_service.rb index ffa18b21e4..8f52538389 100644 --- a/app/services/delete_account_service.rb +++ b/app/services/delete_account_service.rb @@ -8,6 +8,7 @@ class DeleteAccountService < BaseService account_pins active_relationships aliases + antennas block_relationships blocked_by_relationships conversation_mutes diff --git a/app/services/fan_out_on_write_service.rb b/app/services/fan_out_on_write_service.rb index c2bded438c..856c7f0ceb 100644 --- a/app/services/fan_out_on_write_service.rb +++ b/app/services/fan_out_on_write_service.rb @@ -119,13 +119,14 @@ class FanOutOnWriteService < BaseService def deliver_to_antennas! lists = [] antennas = Antenna.availables - antennas = antennas.left_joins(:antenna_accounts).where(any_accounts: true).or(Antenna.left_joins(:antenna_accounts) .where(antenna_accounts: { exclude: false, account: @status.account })) - antennas = antennas.left_joins(:antenna_domains) .where(any_domains: true) .or(Antenna.left_joins(:antenna_accounts).left_joins(:antenna_domains) .where(antenna_domains: { exclude: false, name: @status.account.domain })) - antennas = antennas.left_joins(:antenna_tags) .where(any_tags: true) .or(Antenna.left_joins(:antenna_accounts).left_joins(:antenna_domains).left_joins(:antenna_tags).where(antenna_tags: { exclude: false, tag: @status.tags })) + antennas = antennas.left_joins(:antenna_accounts).where(any_accounts: true).or(Antenna.availables.left_joins(:antenna_accounts) .where(antenna_accounts: { exclude: false, account: @status.account })) + antennas = antennas.left_joins(:antenna_domains) .where(any_domains: true) .or(Antenna.availables.left_joins(:antenna_accounts).left_joins(:antenna_domains) .where(antenna_domains: { exclude: false, name: @status.account.domain })) + antennas = antennas.left_joins(:antenna_tags) .where(any_tags: true) .or(Antenna.availables.left_joins(:antenna_accounts).left_joins(:antenna_domains).left_joins(:antenna_tags).where(antenna_tags: { exclude: false, tag: @status.tags })) + antennas = antennas.where(account: @status.account.followers) if @status.visibility.to_sym == :unlisted antennas.in_batches do |ans| ans.each do |antenna| next if !antenna.enabled? - next if antenna.keywords.any? && !antenna.keywords.any? { |keyword| @status.text.include?(keyword) } + next if antenna.keywords.any? && [nil, :public].include?(@status.searchability.to_sym) && !antenna.keywords.any? { |keyword| @status.text.include?(keyword) } next if antenna.exclude_keywords.any? && antenna.exclude_keywords.any? { |keyword| @status.text.include?(keyword) } next if antenna.antenna_accounts.where(exclude: true, account: @status.account).any? next if antenna.antenna_domains.where(exclude: true, name: @status.account.domain).any? diff --git a/app/views/antennas/_antenna.html.haml b/app/views/antennas/_antenna.html.haml index 0ab29ee67b..ad48eea804 100644 --- a/app/views/antennas/_antenna.html.haml +++ b/app/views/antennas/_antenna.html.haml @@ -9,6 +9,9 @@ - else = t('antennas.index.expires_in', distance: distance_of_time_in_words_to_now(antenna.expires_at)) + .listname + = antenna.list.title + .filters-list__item__permissions %ul.permissions-list - unless antenna.antenna_domains.empty? @@ -58,7 +61,7 @@ .announcements-list__item__action-bar .announcements-list__item__meta - = t('antenna.index.contexts', contexts: antenna.context.map { |context| I18n.t("antenna.contexts.#{context}") }.join(', ')) + = t('antennas.index.contexts', contexts: antenna.context.map { |context| I18n.t("antennas.contexts.#{context}") }.join(', ')) %div = table_link_to 'pencil', t('antennas.edit.title'), edit_antenna_path(antenna)