frontend/stores/useEventCreationStore.ts (view raw)
1import {create} from 'zustand';
2import {persist, createJSONStorage} from 'zustand/middleware';
3import {EventInput} from '../generated/graphql';
4
5interface State {
6 ready: boolean;
7 event: Partial<EventInput>;
8 setField: (fieldName: keyof EventInput, value: unknown) => void;
9}
10
11const useEventCreationStore = create<State>()(
12 persist(
13 (set, get) => ({
14 ready: false,
15 event: {},
16 setField: (field, value) => {
17 const currentEvent = get().event;
18 set({event: {...currentEvent, [field]: value}});
19 },
20 }),
21 {
22 name: 'event-creation',
23 storage: createJSONStorage(() => localStorage),
24 onRehydrateStorage: () => state => {
25 if (state) state.ready = true;
26 },
27 }
28 )
29);
30
31export default useEventCreationStore;