all repos — caroster @ 7aa17436c75503123cefb51191e8a757883333e9

[Octree] Group carpool to your event https://caroster.io

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;