1
0
Fork 0
forked from gitea/nas

Merge remote-tracking branch 'parent/stable-4.3' into kb-draft-15.4-lts

This commit is contained in:
KMY 2024-10-21 20:07:10 +09:00
commit fbd8709c65
271 changed files with 2107 additions and 1174 deletions

View file

@ -18,5 +18,6 @@ class FollowRecommendation < ApplicationRecord
belongs_to :account_summary, foreign_key: :account_id, inverse_of: false
belongs_to :account
scope :localized, ->(locale) { joins(:account_summary).merge(AccountSummary.localized(locale)) }
scope :unsupressed, -> { where.not(FollowRecommendationSuppression.where(FollowRecommendationSuppression.arel_table[:account_id].eq(arel_table[:account_id])).select(1).arel.exists) }
scope :localized, ->(locale) { unsupressed.joins(:account_summary).merge(AccountSummary.localized(locale)) }
end

View file

@ -11,7 +11,7 @@ class FollowRecommendationFilter
attr_reader :params, :language
def initialize(params)
@language = params.delete('language') || I18n.locale
@language = usable_language(params.delete('language') || I18n.locale)
@params = params
end
@ -22,4 +22,15 @@ class FollowRecommendationFilter
Account.includes(:account_stat).joins(:follow_recommendation).merge(FollowRecommendation.localized(@language).order(rank: :desc))
end
end
private
def usable_language(locale)
return locale if Trends.available_locales.include?(locale)
locale = locale.to_s.split(/[_-]/).first
return locale if Trends.available_locales.include?(locale)
nil
end
end

View file

@ -62,6 +62,6 @@ class NotificationPolicy < ApplicationRecord
private
def pending_notification_requests
@pending_notification_requests ||= notification_requests.limit(MAX_MEANINGFUL_COUNT).pick(Arel.sql('count(*), coalesce(sum(notifications_count), 0)::bigint'))
@pending_notification_requests ||= notification_requests.without_suspended.limit(MAX_MEANINGFUL_COUNT).pick(Arel.sql('count(*), coalesce(sum(notifications_count), 0)::bigint'))
end
end

View file

@ -26,6 +26,8 @@ class NotificationRequest < ApplicationRecord
before_save :prepare_notifications_count
scope :without_suspended, -> { joins(:from_account).merge(Account.without_suspended) }
def self.preload_cache_collection(requests)
cached_statuses_by_id = yield(requests.filter_map(&:last_status)).index_by(&:id) # Call cache_collection in block