feat: 🚸 Enable to skip tour
Simon Mulquin simon@octree.ch
Fri, 11 Mar 2022 12:22:26 +0000
4 files changed,
27 insertions(+),
18 deletions(-)
M
frontend/containers/EventBar/index.tsx
→
frontend/containers/EventBar/index.tsx
@@ -73,7 +73,10 @@ },
{divider: true}, { label: t('menu.tour'), - onClick: onTourRestart, + onClick: () => { + setAnchorEl(null); + onTourRestart(); + }, id: 'TourTab', }, ];@@ -92,7 +95,10 @@ },
{divider: true}, { label: t('menu.tour'), - onClick: onTourRestart, + onClick: () => { + setAnchorEl(null); + onTourRestart(); + }, id: 'TourTab', }, ];@@ -120,7 +126,11 @@ >
<Toolbar> <div className={classes.name}> <Link href={settings?.['about_link'] || ''}> - <img className={classes.logo} src="/assets/Logo_in_beta.svg" alt="Logo" /> + <img + className={classes.logo} + src="/assets/Logo_in_beta.svg" + alt="Logo" + /> </Link> <Typography variant="h6" noWrap id="MenuHeaderTitle"> {event.name}
M
frontend/containers/WelcomeDialog/index.tsx
→
frontend/containers/WelcomeDialog/index.tsx
@@ -19,7 +19,7 @@
const onStartTour = () => setTour({showWelcome: false, run: true, step: 0, prev: -1}); - const onCancel = () => setTour({showWelcome: false}); + const onCancel = () => setTour({showWelcome: false}); return ( <Dialog open={showWelcome} fullWidth maxWidth="xs">
M
frontend/hooks/useTour.ts
→
frontend/hooks/useTour.ts
@@ -65,17 +65,6 @@ {content: t`tour.user.step4`, target: '.tour_event_share'},
].map(currentStep => ({...currentStep, ...STEP_SETTINGS})); }, [isCreator]); - // Init tour - useEffect(() => { - if (!isReady) return; - let hasOnboarded = profile?.onboardingUser || onboardingUser; - if (isCreator) - hasOnboarded = profile?.onboardingCreator || onboardingCreator; - const hasSteps = steps.length > 0; - const showWelcome = hasSteps && !hasOnboarded; - setTour({showWelcome}); - }, [steps, isCreator, onboardingCreator, onboardingUser, profile, isReady]); - // On step change : wait for the UI a little and run it useEffect(() => { let timer;
M
frontend/stores/useTourStore.ts
→
frontend/stores/useTourStore.ts
@@ -6,19 +6,29 @@ isCreator: boolean | null;
run: boolean; step: number; prev: number; -} +}; type State = Tour & { setTour: (tour: Partial<Tour>) => void; }; +const ONBOARDING_STORAGE_KEY = 'showWelcome'; +let persistedShowWelcome = null; +if(typeof localStorage !== 'undefined') + persistedShowWelcome = JSON.parse(localStorage.getItem(ONBOARDING_STORAGE_KEY)); + const useTourStore = create<State>(set => ({ - showWelcome: false, + showWelcome: typeof persistedShowWelcome === 'boolean' ? persistedShowWelcome : true, isCreator: null, run: false, step: -1, prev: -1, - setTour: tour => set(s => ({...s, ...tour})), + setTour: tour => { + if (typeof tour.showWelcome != 'undefined') { + localStorage.setItem('showWelcome', String(tour.showWelcome)); + } + set(s => ({...s, ...tour})); + }, })); export default useTourStore;