all repos — caroster @ d0d47704e427face6c4cea5a2e1326c3679f6f5d

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

frontend/stores/useTourStore.ts (view raw)

 1import create from 'zustand';
 2
 3type Tour = {
 4  showWelcome: boolean;
 5  isCreator: boolean | null;
 6  run: boolean;
 7  step: number;
 8  prev: number;
 9};
10
11type State = Tour & {
12  setTour: (tour: Partial<Tour>) => void;
13};
14
15const ONBOARDING_STORAGE_KEY = 'showWelcome';
16let persistedShowWelcome = null;
17if(typeof localStorage !== 'undefined')
18    persistedShowWelcome = JSON.parse(localStorage.getItem(ONBOARDING_STORAGE_KEY));
19
20const useTourStore = create<State>(set => ({
21  showWelcome: typeof persistedShowWelcome === 'boolean' ? persistedShowWelcome : true,
22  isCreator: null,
23  run: false,
24  step: -1,
25  prev: -1,
26  setTour: tour => {
27    if (typeof tour.showWelcome != 'undefined') {
28      localStorage.setItem('showWelcome', String(tour.showWelcome));
29    }
30    set(s => ({...s, ...tour}));
31  },
32}));
33
34export default useTourStore;