Merge commit '3c4d30e471
' into kb_migration
This commit is contained in:
commit
809f7d888a
4 changed files with 24 additions and 8 deletions
|
@ -1161,6 +1161,7 @@ body > [data-popper-placement] {
|
||||||
|
|
||||||
.status__content,
|
.status__content,
|
||||||
.status__action-bar,
|
.status__action-bar,
|
||||||
|
.status__emoji-reactions-bar,
|
||||||
.media-gallery,
|
.media-gallery,
|
||||||
.video-player,
|
.video-player,
|
||||||
.audio-player,
|
.audio-player,
|
||||||
|
|
|
@ -28,6 +28,8 @@
|
||||||
class Antenna < ApplicationRecord
|
class Antenna < ApplicationRecord
|
||||||
include Expireable
|
include Expireable
|
||||||
|
|
||||||
|
LIMIT = 30
|
||||||
|
|
||||||
has_many :antenna_domains, inverse_of: :antenna, dependent: :destroy
|
has_many :antenna_domains, inverse_of: :antenna, dependent: :destroy
|
||||||
has_many :antenna_tags, inverse_of: :antenna, dependent: :destroy
|
has_many :antenna_tags, inverse_of: :antenna, dependent: :destroy
|
||||||
has_many :antenna_accounts, inverse_of: :antenna, dependent: :destroy
|
has_many :antenna_accounts, inverse_of: :antenna, dependent: :destroy
|
||||||
|
@ -44,6 +46,8 @@ class Antenna < ApplicationRecord
|
||||||
scope :available_stls, -> { where(available: true, stl: true) }
|
scope :available_stls, -> { where(available: true, stl: true) }
|
||||||
|
|
||||||
validate :list_owner
|
validate :list_owner
|
||||||
|
validate :validate_limit
|
||||||
|
validate :validate_stl_limit
|
||||||
|
|
||||||
def list_owner
|
def list_owner
|
||||||
raise Mastodon::ValidationError, I18n.t('antennas.errors.invalid_list_owner') if !list_id.zero? && list.present? && list.account != account
|
raise Mastodon::ValidationError, I18n.t('antennas.errors.invalid_list_owner') if !list_id.zero? && list.present? && list.account != account
|
||||||
|
@ -212,4 +216,18 @@ class Antenna < ApplicationRecord
|
||||||
end
|
end
|
||||||
self[:exclude_accounts] = accounts
|
self[:exclude_accounts] = accounts
|
||||||
end
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def validate_limit
|
||||||
|
errors.add(:base, I18n.t('scheduled_statuses.over_total_limit', limit: LIMIT)) if account.antennas.count >= LIMIT
|
||||||
|
end
|
||||||
|
|
||||||
|
def validate_stl_limit
|
||||||
|
return unless stl
|
||||||
|
|
||||||
|
stls = account.antennas.where(stl: true).where.not(id: id)
|
||||||
|
|
||||||
|
errors.add(:base, I18n.t('scheduled_statuses.over_total_limit', limit: LIMIT)) if list_id.zero? ? stls.any? { |tl| tl.list_id.zero? } : stls.any? { |tl| tl.list_id != 0 }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -20,7 +20,7 @@ class UserSettings
|
||||||
setting :default_sensitive, default: false
|
setting :default_sensitive, default: false
|
||||||
setting :default_privacy, default: nil
|
setting :default_privacy, default: nil
|
||||||
setting :default_reblog_privacy, default: nil
|
setting :default_reblog_privacy, default: nil
|
||||||
setting :default_searchability, default: :private
|
setting :default_searchability, default: :direct
|
||||||
setting :public_post_to_unlisted, default: false
|
setting :public_post_to_unlisted, default: false
|
||||||
setting :reject_public_unlisted_subscription, default: false
|
setting :reject_public_unlisted_subscription, default: false
|
||||||
setting :reject_unlisted_subscription, default: false
|
setting :reject_unlisted_subscription, default: false
|
||||||
|
|
|
@ -49,10 +49,8 @@ class FanOutOnWriteService < BaseService
|
||||||
when :public, :unlisted, :public_unlisted, :private
|
when :public, :unlisted, :public_unlisted, :private
|
||||||
deliver_to_all_followers!
|
deliver_to_all_followers!
|
||||||
deliver_to_lists!
|
deliver_to_lists!
|
||||||
if [:public, :public_unlisted].include?(@status.visibility.to_sym)
|
deliver_to_antennas! if [:public, :public_unlisted].include?(@status.visibility.to_sym) && !@account.dissubscribable
|
||||||
deliver_to_antennas! unless @account.dissubscribable
|
|
||||||
deliver_to_stl_antennas!
|
deliver_to_stl_antennas!
|
||||||
end
|
|
||||||
when :limited
|
when :limited
|
||||||
deliver_to_mentioned_followers!
|
deliver_to_mentioned_followers!
|
||||||
else
|
else
|
||||||
|
@ -120,11 +118,10 @@ class FanOutOnWriteService < BaseService
|
||||||
end
|
end
|
||||||
|
|
||||||
def deliver_to_stl_antennas!
|
def deliver_to_stl_antennas!
|
||||||
return if @status.reblog? && @account.dissubscribable
|
|
||||||
|
|
||||||
antennas = Antenna.available_stls
|
antennas = Antenna.available_stls
|
||||||
antennas = antennas.where(account_id: Account.without_suspended.joins(:user).select('accounts.id').where('users.current_sign_in_at > ?', User::ACTIVE_DURATION.ago))
|
antennas = antennas.where(account_id: Account.without_suspended.joins(:user).select('accounts.id').where('users.current_sign_in_at > ?', User::ACTIVE_DURATION.ago))
|
||||||
antennas = antennas.where(account: @account.followers).where.not(list_id: 0) unless @account.domain.nil?
|
|
||||||
|
antennas = antennas.where(account: @account.followers).or(antennas.where(account: @account)).where.not(list_id: 0) if !@account.domain.nil? || [:public, :public_unlisted].exclude?(@status.visibility.to_sym)
|
||||||
|
|
||||||
collection = AntennaCollection.new(@status, @options[:update])
|
collection = AntennaCollection.new(@status, @options[:update])
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue