frontend/stores/useEventStore.ts (view raw)
1import create from 'zustand';
2import {Event} from '../generated/graphql';
3
4type State = {
5 event: Event;
6 setEvent: (event: Event) => void;
7 setEventUpdate: (event: Event) => void;
8 isEditing: boolean;
9 setIsEditing: (isEditing: boolean) => void;
10};
11
12const useEventStore = create<State>((set, get) => ({
13 event: null,
14 setEvent: event => set({event: formatEvent(event)}),
15 setEventUpdate: eventUpdate => {
16 const event = get().event;
17 set({event: {...event, ...eventUpdate}});
18 },
19 isEditing: false,
20 setIsEditing: isEditing => set({isEditing}),
21}));
22
23const formatEvent = (event: Event): Event => {
24 const travels = event.travels?.filter(travel => !!travel.vehicle);
25 return {...event, travels};
26};
27
28export default useEventStore;