Skip to content

Commit

Permalink
Fix notification requests from suspended accounts still being listed (m…
Browse files Browse the repository at this point in the history
  • Loading branch information
ClearlyClaire committed Oct 14, 2024
1 parent 45a5206 commit e5e0144
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ def dismiss_bulk
private

def load_requests
requests = NotificationRequest.where(account: current_account).includes(:last_status, from_account: [:account_stat, :user]).to_a_paginated_by_id(
requests = NotificationRequest.where(account: current_account).without_suspended.includes(:last_status, from_account: [:account_stat, :user]).to_a_paginated_by_id(
limit_param(DEFAULT_ACCOUNTS_LIMIT),
params_slice(:max_id, :since_id, :min_id)
)
Expand Down
2 changes: 1 addition & 1 deletion app/models/notification_policy.rb
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,6 @@ def filter_private_mentions=(value)
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
2 changes: 2 additions & 0 deletions app/models/notification_request.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
18 changes: 12 additions & 6 deletions spec/models/notification_policy_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,25 @@
subject { Fabricate(:notification_policy) }

let(:sender) { Fabricate(:account) }
let(:suspended_sender) { Fabricate(:account) }

before do
Fabricate.times(2, :notification, account: subject.account, activity: Fabricate(:status, account: sender), filtered: true, type: :mention)
Fabricate(:notification_request, account: subject.account, from_account: sender)
subject.summarize!
end

it 'sets pending_requests_count' do
expect(subject.pending_requests_count).to eq 1
Fabricate(:notification, account: subject.account, activity: Fabricate(:status, account: suspended_sender), filtered: true, type: :mention)
Fabricate(:notification_request, account: subject.account, from_account: suspended_sender)

suspended_sender.suspend!

subject.summarize!
end

it 'sets pending_notifications_count' do
expect(subject.pending_notifications_count).to eq 2
it 'sets pending_requests_count and pending_notifications_count' do
expect(subject).to have_attributes(
pending_requests_count: 1,
pending_notifications_count: 2
)
end
end
end

0 comments on commit e5e0144

Please sign in to comment.