From 71e97b3d72399fcf1afd8a47bd257c2b491e1a3e Mon Sep 17 00:00:00 2001 From: alma Date: Thu, 15 Jan 2026 15:23:43 +0100 Subject: [PATCH] Agenda refactor --- app/agenda/page.tsx | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/app/agenda/page.tsx b/app/agenda/page.tsx index 0109432..31dbbd3 100644 --- a/app/agenda/page.tsx +++ b/app/agenda/page.tsx @@ -410,10 +410,25 @@ export default async function CalendarPage() { : Infinity; // Sync if never synced, or if enough time has passed (use minimum of 1 min or configured frequency) - const needsSync = !syncConfig.lastSyncAt || - minutesSinceLastSync >= Math.min(microsoftMinSyncInterval, syncConfig.syncFrequency); + // Also sync if last sync had an error or if calendar has no events (might be a new setup) + const calendar = await prisma.calendar.findUnique({ + where: { id: syncConfig.calendarId }, + include: { + _count: { + select: { events: true } + } + } + }); - console.log(`[AGENDA] Microsoft sync config ${syncConfig.id}: lastSyncAt=${syncConfig.lastSyncAt}, minutesSinceLastSync=${minutesSinceLastSync.toFixed(1)}, needsSync=${needsSync}, syncFrequency=${syncConfig.syncFrequency}`); + const hasEvents = (calendar?._count?.events || 0) > 0; + const hasError = !!syncConfig.lastSyncError; + + const needsSync = !syncConfig.lastSyncAt || + minutesSinceLastSync >= Math.min(microsoftMinSyncInterval, syncConfig.syncFrequency) || + hasError || // Force sync if there was an error + (!hasEvents && syncConfig.lastSyncAt); // Force sync if calendar has no events but was synced before + + console.log(`[AGENDA] Microsoft sync config ${syncConfig.id}: lastSyncAt=${syncConfig.lastSyncAt}, minutesSinceLastSync=${minutesSinceLastSync.toFixed(1)}, needsSync=${needsSync}, syncFrequency=${syncConfig.syncFrequency}, hasEvents=${hasEvents}, hasError=${hasError}`); if (needsSync) { console.log(`[AGENDA] Triggering background sync for Microsoft calendar ${syncConfig.id}`);