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: false,
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;