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;