import DangerButton from "@/components/button/DangerButton"; import PrimaryButton from "@/components/button/PrimaryButton"; import SecondaryButton from "@/components/button/SecondaryButton"; import DateInput from "@/components/input/DateInput"; import TextArea from "@/components/input/TextArea"; import TextInput from "@/components/input/TextInput"; import RaidBuilderModal from "@/components/modal/RaidBuilderModal"; import { CalendarEvent } from "@/interface/Calendar"; import { useTimedModal } from "@/providers/TimedModalProvider"; import { UseMutationResult } from "@tanstack/react-query"; import moment from "moment"; import { useEffect, useState } from "react"; import { BsTrash3 } from "react-icons/bs"; export default function CalendarEventModal({ display, close, calendarEvent, disabled, createCalendarEventMutate, updateCalendarEventMutate, deleteCalendarEventMutate }:{ display: boolean; close: () => void; calendarEvent?: CalendarEvent; disabled?: boolean; createCalendarEventMutate: UseMutationResult; updateCalendarEventMutate: UseMutationResult; deleteCalendarEventMutate: UseMutationResult; }){ const [ eventName, setEventName ] = useState(calendarEvent?.eventName ?? ""); const [ eventDescription, setEventDescription ] = useState(calendarEvent?.eventDescription ?? ""); const [ eventStartDate, setEventStartDate ] = useState(calendarEvent?.eventStartDate ?? new Date()); const [ eventEndDate, setEventEndDate ] = useState(calendarEvent?.eventEndDate ?? new Date()); const { addSuccessMessage, addErrorMessage } = useTimedModal(); const modalId = crypto.randomUUID().replaceAll("-", ""); useEffect(() => { if(createCalendarEventMutate.status === "success"){ createCalendarEventMutate.reset(); addSuccessMessage(`Calendar Event ${eventName} created successfully`); close(); } else if(updateCalendarEventMutate.status === "success"){ updateCalendarEventMutate.reset(); addSuccessMessage(`Calendar Event ${eventName} updated successfully`); close(); } else if(deleteCalendarEventMutate.status === "success"){ deleteCalendarEventMutate.reset(); addSuccessMessage(`Calendar Event ${eventName} deleted successfully`); close(); } else if(createCalendarEventMutate.status === "error"){ createCalendarEventMutate.reset(); addErrorMessage(`Error creating calendar event ${eventName}: ${createCalendarEventMutate.error.message}`); console.log(createCalendarEventMutate.error); } else if(updateCalendarEventMutate.status === "error"){ updateCalendarEventMutate.reset(); addErrorMessage(`Error updating calendar event ${eventName}: ${updateCalendarEventMutate.error.message}`); console.log(updateCalendarEventMutate.error); } else if(deleteCalendarEventMutate.status === "error"){ deleteCalendarEventMutate.reset(); addErrorMessage(`Error deleting calendar event ${eventName}: ${deleteCalendarEventMutate.error.message}`); console.log(deleteCalendarEventMutate.error); } }); const createCalendarEvent = () => { createCalendarEventMutate.mutate({eventName, eventDescription, eventStartDate, eventEndDate}); } const updateCalendarEvent = () => { updateCalendarEventMutate.mutate({calendarEventId: calendarEvent?.calendarEventId, eventName, eventDescription, eventStartDate, eventEndDate}); } const deleteCalendarEvent = () => { deleteCalendarEventMutate.mutate(calendarEvent as CalendarEvent); } useEffect(() => { if(calendarEvent){ setEventName(calendarEvent?.eventName ?? ""); setEventDescription(calendarEvent?.eventDescription ?? ""); setEventStartDate(calendarEvent.eventStartDate); setEventEndDate(calendarEvent.eventEndDate); } else{ setEventName(""); setEventDescription(""); setEventStartDate(new Date()); setEventEndDate(new Date()); } }, [ calendarEvent ]); return (
setEventName(e.target.value)} value={eventName} disabled={disabled} />