diff --git a/src/app/pages/client/ClientNonUIFeatures.tsx b/src/app/pages/client/ClientNonUIFeatures.tsx index 36d0660ad..6ff73b64c 100644 --- a/src/app/pages/client/ClientNonUIFeatures.tsx +++ b/src/app/pages/client/ClientNonUIFeatures.tsx @@ -15,6 +15,7 @@ import { import { focusAssistActiveAtom } from '../../state/focusAssist'; import { manualDndAtom } from '../../state/manualDnd'; import { isSnoozeActive, notificationSnoozeUntilAtom } from '../../state/notificationSnooze'; +import { isWithinTimeWindow } from '../../utils/timeWindow'; import { roomToUnreadAtom } from '../../state/room/roomToUnread'; import LogoSVG from '../../../../public/res/lotus.png'; import LogoUnreadSVG from '../../../../public/res/lotus-unread.png'; @@ -69,18 +70,6 @@ import { // the async invite-atom population lands first and isn't mistaken for new invites. const INVITE_NOTIFY_ARM_DELAY_MS = 3000; -function isInQuietHours(start: string, end: string): boolean { - const now = new Date(); - const [sh, sm] = start.split(':').map(Number); - const [eh, em] = end.split(':').map(Number); - const cur = now.getHours() * 60 + now.getMinutes(); - const s = sh! * 60 + (sm ?? 0); - const e = eh! * 60 + (em ?? 0); - // start===end means zero-length window → treat as disabled (no quiet hours) - if (s === e) return false; - return s < e ? cur >= s && cur < e : cur >= s || cur < e; -} - function SystemEmojiFeature() { const [twitterEmoji] = useSetting(settingsAtom, 'twitterEmoji'); @@ -259,7 +248,7 @@ function InviteNotifications() { focusAssistActive || manualDnd || isSnoozeActive(snoozeUntil) || - (quietHoursEnabled && isInQuietHours(quietHoursStart, quietHoursEnd)); + (quietHoursEnabled && isWithinTimeWindow(quietHoursStart, quietHoursEnd)); if (quietActive) return; if (showNotifications && notificationPermission('granted')) { @@ -539,7 +528,7 @@ function MessageNotifications() { focusAssistActive || manualDnd || isSnoozeActive(snoozeUntil) || - (quietHoursEnabled && isInQuietHours(quietHoursStart, quietHoursEnd)); + (quietHoursEnabled && isWithinTimeWindow(quietHoursStart, quietHoursEnd)); if (quietActive) return; if (showNotifications && notificationPermission('granted')) {