fix: keep daily brief independent from warning checks

This commit is contained in:
zv
2026-06-12 21:43:34 +02:00
parent 763de7fd05
commit 1ff76cf847
3 changed files with 24 additions and 7 deletions

View File

@@ -77,6 +77,16 @@ async function callNotificationEndpoint(path) {
return body;
}
async function callNotificationEndpointSafely(path) {
try {
await callNotificationEndpoint(path);
return true;
} catch (error) {
console.error(formatWorkerError(error));
return false;
}
}
function formatWorkerError(error) {
if (error?.cause?.code === "ECONNREFUSED") {
return [
@@ -91,17 +101,19 @@ function formatWorkerError(error) {
async function tick() {
if (isRunningTick) return;
isRunningTick = true;
const now = Date.now();
const warningIntervalMs = warningIntervalMinutes * 60_000;
try {
const now = Date.now();
const warningIntervalMs = warningIntervalMinutes * 60_000;
if (now - lastWarningCheckAt >= warningIntervalMs) {
lastWarningCheckAt = now;
await callNotificationEndpoint("/api/notifications/check");
await callNotificationEndpointSafely("/api/notifications/check");
}
const warsawTime = getWarsawDateParts();
if (isAtOrAfterTime(warsawTime.time, morningBriefTime) && lastMorningBriefDate !== warsawTime.dateKey) {
await callNotificationEndpoint("/api/notifications/daily-brief");
const sentBrief = await callNotificationEndpointSafely("/api/notifications/daily-brief");
if (!sentBrief) return;
lastMorningBriefDate = warsawTime.dateKey;
}
} catch (error) {