calendar 31
This commit is contained in:
parent
13fb11219c
commit
75e6385ace
@ -501,9 +501,8 @@ export function CalendarClient({ initialCalendars, userId, userProfile }: Calend
|
|||||||
let calendarsData = [];
|
let calendarsData = [];
|
||||||
let seenPrincipal = false;
|
let seenPrincipal = false;
|
||||||
let principalCalendarId = null;
|
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) {
|
for (const cal of data) {
|
||||||
if (cal.name === "Calendrier principal") {
|
if (cal.name === "Calendrier principal") {
|
||||||
if (!seenPrincipal) {
|
if (!seenPrincipal) {
|
||||||
@ -511,12 +510,7 @@ export function CalendarClient({ initialCalendars, userId, userProfile }: Calend
|
|||||||
principalCalendarId = cal.id;
|
principalCalendarId = cal.id;
|
||||||
calendarsData.push(cal);
|
calendarsData.push(cal);
|
||||||
}
|
}
|
||||||
} else if (cal.name === "Default") {
|
} else if (cal.name !== "Default") {
|
||||||
// Collect events from Default calendar
|
|
||||||
if (cal.events && cal.events.length > 0) {
|
|
||||||
eventsToMigrate.push(...cal.events);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
calendarsData.push(cal);
|
calendarsData.push(cal);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -543,53 +537,36 @@ export function CalendarClient({ initialCalendars, userId, userProfile }: Calend
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Migrate events from Default calendar to Principal calendar
|
// Delete duplicate Calendrier principal and Default calendars
|
||||||
if (eventsToMigrate.length > 0 && principalCalendarId) {
|
const deletePromises = data
|
||||||
console.log("Migrating events to principal calendar:", eventsToMigrate.length);
|
.filter(cal =>
|
||||||
for (const event of eventsToMigrate) {
|
(cal.name === "Calendrier principal" && cal.id !== principalCalendarId) ||
|
||||||
|
cal.name === "Default"
|
||||||
|
)
|
||||||
|
.map(async (cal) => {
|
||||||
try {
|
try {
|
||||||
const response = await fetch("/api/events", {
|
const response = await fetch(`/api/calendars/${cal.id}`, {
|
||||||
method: "POST",
|
method: "DELETE",
|
||||||
headers: {
|
headers: {
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
body: JSON.stringify({
|
|
||||||
...event,
|
|
||||||
calendarId: principalCalendarId,
|
|
||||||
}),
|
|
||||||
});
|
});
|
||||||
if (response.ok) {
|
if (!response.ok) {
|
||||||
const newEvent = await response.json();
|
console.error(`Failed to delete calendar ${cal.id}: ${response.status}`);
|
||||||
// Add the migrated event to the principal calendar
|
|
||||||
calendarsData = calendarsData.map(cal => {
|
|
||||||
if (cal.id === principalCalendarId) {
|
|
||||||
return {
|
|
||||||
...cal,
|
|
||||||
events: [...(cal.events || []), newEvent]
|
|
||||||
};
|
|
||||||
}
|
|
||||||
return cal;
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
} 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) {
|
} catch (error) {
|
||||||
console.error("Error deleting calendar:", 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
|
// Ensure events array exists for each calendar and convert dates
|
||||||
const calendarsWithEvents = calendarsData.map((cal: Calendar & { events: Event[] }) => ({
|
const calendarsWithEvents = calendarsData.map((cal: Calendar & { events: Event[] }) => ({
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user