calendar 12
This commit is contained in:
parent
c88091a1dc
commit
04d266614c
@ -412,6 +412,7 @@ export function CalendarClient({ initialCalendars, userId, userProfile }: Calend
|
||||
end: "",
|
||||
allDay: false,
|
||||
location: null,
|
||||
calendarId: selectedCalendarId
|
||||
});
|
||||
|
||||
const [selectedEventPreview, setSelectedEventPreview] = useState<Event | null>(null);
|
||||
@ -439,6 +440,31 @@ export function CalendarClient({ initialCalendars, userId, userProfile }: Calend
|
||||
|
||||
const calendarRef = useRef<any>(null);
|
||||
|
||||
const fetchCalendars = async () => {
|
||||
try {
|
||||
setLoading(true);
|
||||
const response = await fetch("/api/calendars");
|
||||
if (!response.ok) throw new Error("Failed to fetch calendars");
|
||||
const data = await response.json();
|
||||
setCalendars(data.map((cal: Calendar & { events: Event[] }) => ({
|
||||
...cal,
|
||||
events: cal.events || []
|
||||
})));
|
||||
if (data.length > 0 && !selectedCalendarId) {
|
||||
setSelectedCalendarId(data[0].id);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("Error fetching calendars:", error);
|
||||
setError(error instanceof Error ? error.message : "Failed to fetch calendars");
|
||||
} finally {
|
||||
setLoading(false);
|
||||
}
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
fetchCalendars();
|
||||
}, []);
|
||||
|
||||
const handleCalendarSave = async (calendarData: Partial<Calendar>) => {
|
||||
try {
|
||||
setLoading(true);
|
||||
@ -454,21 +480,14 @@ export function CalendarClient({ initialCalendars, userId, userProfile }: Calend
|
||||
});
|
||||
|
||||
if (!response.ok) {
|
||||
throw new Error("Erreur lors de la sauvegarde du calendrier");
|
||||
throw new Error("Failed to save calendar");
|
||||
}
|
||||
|
||||
const updatedCalendar = await response.json();
|
||||
if (calendarData.id) {
|
||||
setCalendars(calendars.map(cal =>
|
||||
cal.id === calendarData.id ? { ...cal, ...updatedCalendar } : cal
|
||||
));
|
||||
} else {
|
||||
setCalendars([...calendars, updatedCalendar]);
|
||||
}
|
||||
await fetchCalendars();
|
||||
setIsCalendarModalOpen(false);
|
||||
} catch (error) {
|
||||
console.error("Error saving calendar:", error);
|
||||
setError(error instanceof Error ? error.message : "Une erreur est survenue");
|
||||
setError(error instanceof Error ? error.message : "Failed to save calendar");
|
||||
} finally {
|
||||
setLoading(false);
|
||||
}
|
||||
@ -511,45 +530,36 @@ export function CalendarClient({ initialCalendars, userId, userProfile }: Calend
|
||||
const handleEventSubmit = async () => {
|
||||
try {
|
||||
setLoading(true);
|
||||
const response = await fetch("/api/calendar", {
|
||||
method: "POST",
|
||||
const response = await fetch("/api/events", {
|
||||
method: selectedEvent ? "PUT" : "POST",
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
body: JSON.stringify({
|
||||
title: eventForm.title,
|
||||
description: eventForm.description,
|
||||
start: eventForm.start,
|
||||
end: eventForm.end,
|
||||
isAllDay: eventForm.allDay,
|
||||
location: eventForm.location,
|
||||
calendarId: eventForm.calendarId,
|
||||
...eventForm,
|
||||
calendarId: selectedCalendarId,
|
||||
userId,
|
||||
}),
|
||||
});
|
||||
|
||||
if (!response.ok) {
|
||||
throw new Error("Erreur lors de la sauvegarde de l'événement");
|
||||
throw new Error("Failed to save event");
|
||||
}
|
||||
|
||||
const newEvent = await response.json();
|
||||
// Update events state with the new event
|
||||
setCalendars((prev) => prev.map(cal => ({
|
||||
...cal,
|
||||
events: [...cal.events, newEvent]
|
||||
})));
|
||||
await fetchCalendars();
|
||||
setIsEventModalOpen(false);
|
||||
setEventForm({
|
||||
title: "",
|
||||
description: "",
|
||||
description: null,
|
||||
start: "",
|
||||
end: "",
|
||||
allDay: false,
|
||||
location: "",
|
||||
calendarId: calendars[0]?.id || "",
|
||||
location: null,
|
||||
calendarId: selectedCalendarId
|
||||
});
|
||||
} catch (error) {
|
||||
console.error("Error saving event:", error);
|
||||
setError(error instanceof Error ? error.message : "Une erreur est survenue");
|
||||
setError(error instanceof Error ? error.message : "Failed to save event");
|
||||
} finally {
|
||||
setLoading(false);
|
||||
}
|
||||
@ -560,26 +570,20 @@ export function CalendarClient({ initialCalendars, userId, userProfile }: Calend
|
||||
|
||||
try {
|
||||
setLoading(true);
|
||||
const response = await fetch(`/api/calendar?id=${selectedEvent.id}`, {
|
||||
const response = await fetch(`/api/events/${selectedEvent.id}`, {
|
||||
method: "DELETE",
|
||||
});
|
||||
|
||||
if (!response.ok) {
|
||||
throw new Error("Erreur lors de la suppression de l'événement");
|
||||
throw new Error("Failed to delete event");
|
||||
}
|
||||
|
||||
// Refresh calendar data
|
||||
const eventsResponse = await fetch("/api/calendar");
|
||||
const updatedEvents = await eventsResponse.json();
|
||||
setCalendars(calendars.map(cal => ({
|
||||
...cal,
|
||||
events: updatedEvents.filter((event: Event) => event.calendarId === cal.id)
|
||||
})));
|
||||
|
||||
await fetchCalendars();
|
||||
setIsEventModalOpen(false);
|
||||
setSelectedEvent(null);
|
||||
} catch (error) {
|
||||
setError((error as Error).message);
|
||||
console.error("Error deleting event:", error);
|
||||
setError(error instanceof Error ? error.message : "Failed to delete event");
|
||||
} finally {
|
||||
setLoading(false);
|
||||
}
|
||||
@ -612,6 +616,15 @@ export function CalendarClient({ initialCalendars, userId, userProfile }: Calend
|
||||
<Button
|
||||
onClick={() => {
|
||||
setSelectedEvent(null);
|
||||
setEventForm({
|
||||
title: "",
|
||||
description: null,
|
||||
start: "",
|
||||
end: "",
|
||||
allDay: false,
|
||||
location: null,
|
||||
calendarId: selectedCalendarId
|
||||
});
|
||||
setIsEventModalOpen(true);
|
||||
}}
|
||||
className="bg-primary hover:bg-primary/90 text-white"
|
||||
|
||||
Loading…
Reference in New Issue
Block a user