41 lines
1.2 KiB
TypeScript
Executable File
41 lines
1.2 KiB
TypeScript
Executable File
import { useState, ReactNode } from 'react';
|
|
import { EventContext, EventGroup, EventContextType } from "./EventContext";
|
|
import getAllEvents from "../../utils/events/getAllEvents";
|
|
import createEvent from "../../utils/events/createEvent";
|
|
import deleteEvent from "../../utils/events/deleteEvent";
|
|
|
|
interface EventProviderProps {
|
|
children: ReactNode;
|
|
}
|
|
|
|
export function EventProvider({ children }: EventProviderProps) {
|
|
const [events, setEvents] = useState<EventGroup[]>([]);
|
|
|
|
const updateEvent = async () => {
|
|
const result = await getAllEvents();
|
|
setEvents(result.data.data);
|
|
};
|
|
|
|
const addEvent = async (name: string, description: string, start: string, end: string) => {
|
|
await createEvent(name, description, start, end);
|
|
await updateEvent();
|
|
};
|
|
|
|
const removeEvent = async (eventId: number) => {
|
|
await deleteEvent(eventId);
|
|
await updateEvent();
|
|
};
|
|
|
|
const contextValue: EventContextType = {
|
|
events,
|
|
updateEvent,
|
|
addEvent,
|
|
removeEvent,
|
|
};
|
|
|
|
return (
|
|
<EventContext.Provider value={contextValue}>
|
|
{children}
|
|
</EventContext.Provider>
|
|
);
|
|
} |