diff --git a/ansible/playbooks/5_nextcloud.yml b/ansible/playbooks/5_nextcloud.yml index c8a054e..2c7c263 100644 --- a/ansible/playbooks/5_nextcloud.yml +++ b/ansible/playbooks/5_nextcloud.yml @@ -56,8 +56,8 @@ with_indexed_items: "{{ trusted_domains }}" register: trusted_domains_config until: trusted_domains_config is success - retries: 3 - delay: 5 + retries: 6 + delay: 10 - name: Installer l'application SSO & SAML shell: > diff --git a/front/components/calendar/calendar-client.tsx b/front/components/calendar/calendar-client.tsx index 9de0282..743fc99 100644 --- a/front/components/calendar/calendar-client.tsx +++ b/front/components/calendar/calendar-client.tsx @@ -12,14 +12,16 @@ import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { Loader2, Plus } from "lucide-react"; import { useCalendarEvents } from "@/hooks/use-calendar-events"; import { EventDialog } from "@/components/calendar/event-dialog"; -import { Calendar as CalendarType } from "@prisma/client"; +import { Calendar, Calendar as CalendarType } from "@prisma/client"; import { useToast } from "@/components/ui/use-toast"; +import { CalendarDialog } from "./calendar-dialog"; interface CalendarClientProps { initialCalendars: CalendarType[]; } export function CalendarClient({ initialCalendars }: CalendarClientProps) { + const [isCalendarDialogOpen, setIsCalendarDialogOpen] = useState(false); const [calendars, setCalendars] = useState(initialCalendars); const [selectedCalendarId, setSelectedCalendarId] = useState( initialCalendars[0]?.id || "" @@ -146,6 +148,43 @@ export function CalendarClient({ initialCalendars }: CalendarClientProps) { setSelectedCalendarId(calendarId); }; + // Fonction pour créer un nouveau calendrier + const handleCreateCalendar = async (calendarData: Partial) => { + try { + const response = await fetch("/api/calendars", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(calendarData), + }); + + if (!response.ok) { + throw new Error(`Erreur ${response.status}: ${await response.text()}`); + } + + const newCalendar = await response.json(); + + // Mettre à jour la liste des calendriers + setCalendars([...calendars, newCalendar]); + + // Sélectionner automatiquement le nouveau calendrier + setSelectedCalendarId(newCalendar.id); + + toast({ + title: "Calendrier créé", + description: `Le calendrier "${newCalendar.name}" a été créé avec succès.`, + }); + } catch (error) { + console.error("Erreur lors de la création du calendrier:", error); + toast({ + title: "Erreur", + description: "Impossible de créer le calendrier.", + variant: "destructive", + }); + } + }; + return (
{/* Options et filtres du calendrier */} @@ -169,6 +208,14 @@ export function CalendarClient({ initialCalendars }: CalendarClientProps) { {calendar.name} ))} +