Merge branch 'develop' into fix-captain-credit-usage

This commit is contained in:
Aakash Bakhle
2026-01-12 14:44:40 +05:30
committed by GitHub
3 changed files with 31 additions and 6 deletions
+12 -4
View File
@@ -14,11 +14,19 @@ class ActionCableListener < BaseListener
end
def notification_deleted(event)
return if event.data[:notification].user.blank?
notification_data = event.data[:notification_data]
notification, account, unread_count, count = extract_notification_and_account(event)
tokens = [event.data[:notification].user.pubsub_token]
broadcast(account, tokens, NOTIFICATION_DELETED, { notification: { id: notification.id }, unread_count: unread_count, count: count })
user = User.find_by(id: notification_data[:user_id])
account = Account.find_by(id: notification_data[:account_id])
return if user.blank? || account.blank?
notification_finder = NotificationFinder.new(user, account)
tokens = [user.pubsub_token]
broadcast(account, tokens, NOTIFICATION_DELETED, {
notification: { id: notification_data[:id] },
unread_count: notification_finder.unread_count,
count: notification_finder.count
})
end
def account_cache_invalidated(event)
+11 -1
View File
@@ -180,7 +180,17 @@ class Notification < ApplicationRecord
end
def dispatch_destroy_event
Rails.configuration.dispatcher.dispatch(NOTIFICATION_DELETED, Time.zone.now, notification: self)
# Pass serialized data instead of ActiveRecord object to avoid DeserializationError
# when the async EventDispatcherJob runs after the notification has been deleted
Rails.configuration.dispatcher.dispatch(
NOTIFICATION_DELETED,
Time.zone.now,
notification_data: {
id: id,
user_id: user_id,
account_id: account_id
}
)
end
def set_last_activity_at
+8 -1
View File
@@ -132,7 +132,14 @@ describe ActionCableListener do
describe '#notification_deleted' do
let(:event_name) { :'notification.deleted' }
let!(:notification) { create(:notification, account: account, user: agent) }
let!(:event) { Events::Base.new(event_name, Time.zone.now, notification: notification) }
let(:notification_data) do
{
id: notification.id,
user_id: agent.id,
account_id: account.id
}
end
let!(:event) { Events::Base.new(event_name, Time.zone.now, notification_data: notification_data) }
it 'sends message to account admins, inbox agents' do
expect(ActionCableBroadcastJob).to receive(:perform_later).with(