Agenda refactor
This commit is contained in:
parent
52b0b041eb
commit
108fa3fb8c
@ -579,16 +579,25 @@ export default async function CalendarPage() {
|
|||||||
if (needsSync) {
|
if (needsSync) {
|
||||||
console.log(`[AGENDA] Triggering background sync for Microsoft calendar ${syncConfig.id}`);
|
console.log(`[AGENDA] Triggering background sync for Microsoft calendar ${syncConfig.id}`);
|
||||||
// Trigger sync in background (don't await to avoid blocking page load)
|
// Trigger sync in background (don't await to avoid blocking page load)
|
||||||
|
// The sync will update the database, and the next page load will show the events
|
||||||
import('@/lib/services/microsoft-calendar-sync').then(({ syncMicrosoftCalendar }) => {
|
import('@/lib/services/microsoft-calendar-sync').then(({ syncMicrosoftCalendar }) => {
|
||||||
syncMicrosoftCalendar(syncConfig.id, false).then((result) => {
|
syncMicrosoftCalendar(syncConfig.id, false).then((result) => {
|
||||||
console.log(`[AGENDA] Microsoft sync completed:`, result);
|
console.log(`[AGENDA] Microsoft sync completed:`, {
|
||||||
|
calendarSyncId: syncConfig.id,
|
||||||
|
synced: result.synced,
|
||||||
|
created: result.created,
|
||||||
|
updated: result.updated,
|
||||||
|
});
|
||||||
}).catch((error) => {
|
}).catch((error) => {
|
||||||
console.error('Background sync failed for Microsoft calendar', {
|
console.error('[AGENDA] Background sync failed for Microsoft calendar', {
|
||||||
calendarSyncId: syncConfig.id,
|
calendarSyncId: syncConfig.id,
|
||||||
error: error instanceof Error ? error.message : String(error),
|
error: error instanceof Error ? error.message : String(error),
|
||||||
|
stack: error instanceof Error ? error.stack : undefined,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
} else {
|
||||||
|
console.log(`[AGENDA] Microsoft sync skipped - too soon since last sync (${syncConfig.syncFrequency} min)`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -264,6 +264,14 @@ export async function syncMicrosoftCalendar(
|
|||||||
const endDate = new Date();
|
const endDate = new Date();
|
||||||
endDate.setMonth(endDate.getMonth() + 3);
|
endDate.setMonth(endDate.getMonth() + 3);
|
||||||
|
|
||||||
|
logger.info('Starting Microsoft calendar sync', {
|
||||||
|
calendarSyncId,
|
||||||
|
calendarId: syncConfig.calendarId,
|
||||||
|
email: creds.email,
|
||||||
|
externalCalendarId: syncConfig.externalCalendarId,
|
||||||
|
dateRange: { start: startDate.toISOString(), end: endDate.toISOString() },
|
||||||
|
});
|
||||||
|
|
||||||
const microsoftEvents = await fetchMicrosoftEvents(
|
const microsoftEvents = await fetchMicrosoftEvents(
|
||||||
syncConfig.calendar.userId,
|
syncConfig.calendar.userId,
|
||||||
creds.email,
|
creds.email,
|
||||||
@ -272,6 +280,12 @@ export async function syncMicrosoftCalendar(
|
|||||||
endDate
|
endDate
|
||||||
);
|
);
|
||||||
|
|
||||||
|
logger.info('Fetched Microsoft events', {
|
||||||
|
calendarSyncId,
|
||||||
|
eventCount: microsoftEvents.length,
|
||||||
|
events: microsoftEvents.slice(0, 5).map(e => ({ id: e.id, subject: e.subject, start: e.start.dateTime })),
|
||||||
|
});
|
||||||
|
|
||||||
// Convert Microsoft events to CalDAV-like format
|
// Convert Microsoft events to CalDAV-like format
|
||||||
const caldavEvents = microsoftEvents.map(convertMicrosoftEventToCalDAV);
|
const caldavEvents = microsoftEvents.map(convertMicrosoftEventToCalDAV);
|
||||||
|
|
||||||
@ -286,6 +300,12 @@ export async function syncMicrosoftCalendar(
|
|||||||
let updated = 0;
|
let updated = 0;
|
||||||
let deleted = 0;
|
let deleted = 0;
|
||||||
|
|
||||||
|
logger.info('Syncing events to database', {
|
||||||
|
calendarSyncId,
|
||||||
|
existingEventsCount: existingEvents.length,
|
||||||
|
newEventsCount: caldavEvents.length,
|
||||||
|
});
|
||||||
|
|
||||||
// Sync events: create or update
|
// Sync events: create or update
|
||||||
for (const caldavEvent of caldavEvents) {
|
for (const caldavEvent of caldavEvents) {
|
||||||
// Store Microsoft ID in description with a special prefix for matching
|
// Store Microsoft ID in description with a special prefix for matching
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user