22 lines
908 B
TypeScript
22 lines
908 B
TypeScript
// Pure helpers for the cross-platform "pause notifications" / snooze feature.
|
|||
|
|
// Kept free of jotai/localStorage so they're unit-testable in isolation; the
|
||
|
|
// persisted atom lives in state/notificationSnooze.ts.
|
||
|
|
|
||
|
|
// Represents "paused until I turn it back on" (a far-future instant).
|
||
|
|
export const SNOOZE_INDEFINITE = Number.MAX_SAFE_INTEGER;
|
||
|
|
|
||
|
|
// Is the snooze currently active (i.e. suppressing notifications)?
|
||
|
|
export function isSnoozeActive(until: number, now: number = Date.now()): boolean {
|
||
|
|
return until > now;
|
||
|
|
}
|
||
|
|
|
||
|
|
// The soonest future instant at the given local hour (0-23), minute 0 — used for
|
||
|
|
// the "Until 8 AM" preset. If that hour has already passed today, rolls to
|
||
|
|
// tomorrow.
|
||
|
|
export function nextTimeAtHour(hour: number, now: number = Date.now()): number {
|
||
|
|
const d = new Date(now);
|
||
|
|
d.setHours(hour, 0, 0, 0);
|
||
|
|
if (d.getTime() <= now) d.setDate(d.getDate() + 1);
|
||
|
|
return d.getTime();
|
||
|
|
}
|