diff --git a/components/calendar/calendar-client.tsx b/components/calendar/calendar-client.tsx index ba645dae..b1f328d6 100644 --- a/components/calendar/calendar-client.tsx +++ b/components/calendar/calendar-client.tsx @@ -501,9 +501,8 @@ export function CalendarClient({ initialCalendars, userId, userProfile }: Calend let calendarsData = []; let seenPrincipal = false; let principalCalendarId = null; - let eventsToMigrate = []; - // First pass: identify the principal calendar to keep and collect events + // First pass: identify the principal calendar and other valid calendars for (const cal of data) { if (cal.name === "Calendrier principal") { if (!seenPrincipal) { @@ -511,12 +510,7 @@ export function CalendarClient({ initialCalendars, userId, userProfile }: Calend principalCalendarId = cal.id; calendarsData.push(cal); } - } else if (cal.name === "Default") { - // Collect events from Default calendar - if (cal.events && cal.events.length > 0) { - eventsToMigrate.push(...cal.events); - } - } else { + } else if (cal.name !== "Default") { calendarsData.push(cal); } } @@ -543,53 +537,36 @@ export function CalendarClient({ initialCalendars, userId, userProfile }: Calend } } - // Migrate events from Default calendar to Principal calendar - if (eventsToMigrate.length > 0 && principalCalendarId) { - console.log("Migrating events to principal calendar:", eventsToMigrate.length); - for (const event of eventsToMigrate) { + // Delete duplicate Calendrier principal and Default calendars + const deletePromises = data + .filter(cal => + (cal.name === "Calendrier principal" && cal.id !== principalCalendarId) || + cal.name === "Default" + ) + .map(async (cal) => { try { - const response = await fetch("/api/events", { - method: "POST", + const response = await fetch(`/api/calendars/${cal.id}`, { + method: "DELETE", headers: { "Content-Type": "application/json", }, - body: JSON.stringify({ - ...event, - calendarId: principalCalendarId, - }), }); - if (response.ok) { - const newEvent = await response.json(); - // Add the migrated event to the principal calendar - calendarsData = calendarsData.map(cal => { - if (cal.id === principalCalendarId) { - return { - ...cal, - events: [...(cal.events || []), newEvent] - }; - } - return cal; - }); + if (!response.ok) { + console.error(`Failed to delete calendar ${cal.id}: ${response.status}`); } - } catch (error) { - console.error("Error migrating event:", error); - } - } - } - - // Delete duplicate Calendrier principal and Default calendars - for (const cal of data) { - if ((cal.name === "Calendrier principal" && cal.id !== principalCalendarId) || - cal.name === "Default") { - try { - await fetch(`/api/calendars/${cal.id}`, { - method: "DELETE", - }); } catch (error) { console.error("Error deleting calendar:", error); } - } - } + }); + + await Promise.all(deletePromises); + + // Sort calendars to ensure Calendrier principal is first + calendarsData.sort((a, b) => { + if (a.name === "Calendrier principal") return -1; + if (b.name === "Calendrier principal") return 1; + return new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime(); + }); // Ensure events array exists for each calendar and convert dates const calendarsWithEvents = calendarsData.map((cal: Calendar & { events: Event[] }) => ({