all repos — caroster @ d2e47634bff1fe498b6b81f90a89ff0b5817c5c8

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

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  areDetailsOpened: boolean;
 9  setAreDetailsOpened: (areDetailsOpened: boolean) => void;
10  isEditing: boolean;
11  setIsEditing: (isEditing: boolean) => void;
12};
13
14const useEventStore = create<State>((set, get) => ({
15  event: null,
16  setEvent: event => set({event}),
17  setEventUpdate: eventUpdate => {
18    const event = get().event;
19    set({event: {...event, ...eventUpdate}});
20  },
21  areDetailsOpened: false,
22  setAreDetailsOpened: areDetailsOpened => {
23    if (!areDetailsOpened) {
24      set({areDetailsOpened, isEditing: false});
25    }
26    set({areDetailsOpened});
27  },
28  isEditing: false,
29  setIsEditing: isEditing => set({isEditing}),
30}));
31
32export default useEventStore;