on 4c8c607 help sign in
bridge/src/views/Activate.js
52 lines 1.4 kB history raw
1import React, { useEffect } from 'react';
3import useRouter from 'lib/useRouter';
4import { LocalRouterProvider } from 'lib/LocalRouter';
5import { useSyncKnownPoints } from 'lib/useSyncPoints';
7import { ActivateFlowProvider } from './Activate/ActivateFlow';
8import useActivateFlowState from './Activate/useActivateFlowState';
9import ActivateCode from './Activate/ActivateCode';
10import ActivatePassport from './Activate/ActivatePassport';
11import Disclaimer from './Disclaimer';
13const NAMES = {
14 CODE: 'CODE',
15 DISCLAIMER: 'DISCLAIMER',
16 PASSPORT: 'PASSPORT',
17};
19const VIEWS = {
20 [NAMES.CODE]: ActivateCode,
21 [NAMES.PASSPORT]: ActivatePassport,
22 [NAMES.DISCLAIMER]: Disclaimer,
23};
25export default function Activate() {
26 const state = useActivateFlowState();
27 const { Route, ...router } = useRouter({
28 names: NAMES,
29 views: VIEWS,
30 initialRoutes: [{ key: NAMES.CODE }],
31 });
33 useEffect(() => {
34 // remove potential /activate path on unmount
35 return () => {
36 window.history.replaceState(null, null, '');
37 };
38 }, []);
40 // when we know the derived point, ensure we have the data to display it
41 useSyncKnownPoints(
42 [state.derivedPoint.getOrElse(null)].filter(p => p !== null)
43 );
45 return (
46 <LocalRouterProvider value={router}>
47 <ActivateFlowProvider value={state}>
48 <Route />
49 </ActivateFlowProvider>
50 </LocalRouterProvider>
51 );