Fix some antenna views

This commit is contained in:
KMY 2023-04-23 20:22:41 +09:00
parent 49d036e9c6
commit 59fcf47180
5 changed files with 19 additions and 11 deletions

View file

@ -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;
}

View file

@ -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

View file

@ -8,6 +8,7 @@ class DeleteAccountService < BaseService
account_pins
active_relationships
aliases
antennas
block_relationships
blocked_by_relationships
conversation_mutes

View file

@ -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?

View file

@ -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)