FIX: Push notification delay should not be longer than specified (#20864)

When user.last_seen was less than push_notification_time_window_mins we
where delaying the notification for the whole
push_notification_time_window_mins PLUS the time the user was away from.

Originally reported in https://meta.discourse.org/t/-/259688
This commit is contained in:
Rafael dos Santos Silva
2023-03-28 13:22:54 -03:00
committed by GitHub
parent f8720a20f9
commit 2a7bdb2d66
2 changed files with 15 additions and 6 deletions

View File

@@ -55,12 +55,9 @@ class PostAlerter
if user.push_subscriptions.exists?
if user.seen_since?(SiteSetting.push_notification_time_window_mins.minutes.ago)
Jobs.enqueue_in(
SiteSetting.push_notification_time_window_mins.minutes,
:send_push_notification,
user_id: user.id,
payload: payload,
)
delay =
(SiteSetting.push_notification_time_window_mins - (Time.now - user.last_seen_at) / 60)
Jobs.enqueue_in(delay.minutes, :send_push_notification, user_id: user.id, payload: payload)
else
Jobs.enqueue(:send_push_notification, user_id: user.id, payload: payload)
end