all repos — caroster @ 63428b58d9a5b0438d9e4d8afb2fd46e9dab1a08

[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  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;