on 2d3487f help sign in
bridge/src/views/Activate.js
50 lines 1.4 kB history raw
1import React, { useEffect } from 'react';
3import useRouter from 'lib/useRouter';
4import { LocalRouterProvider } from 'lib/LocalRouter';
5import { useSyncDates } from 'lib/useSyncPoints';
7import { ActivateFlowProvider } from './Activate/ActivateFlow';
8import useActivateFlowState from './Activate/useActivateFlowState';
9import ActivateCode from './Activate/ActivateCode';
10import ActivateMasterKey from './Activate/ActivateMasterKey';
11import Disclaimer from './Disclaimer';
13const NAMES = {
14 CODE: 'CODE',
15 DISCLAIMER: 'DISCLAIMER',
16 MASTER_KEY: 'MASTER_KEY',
17};
19const VIEWS = {
20 [NAMES.CODE]: ActivateCode,
21 [NAMES.DISCLAIMER]: Disclaimer,
22 [NAMES.MASTER_KEY]: ActivateMasterKey,
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 useSyncDates([state.derivedPoint.getOrElse(null)].filter(p => p !== null));
43 return (
44 <LocalRouterProvider value={router}>
45 <ActivateFlowProvider value={state}>
46 <Route />
47 </ActivateFlowProvider>
48 </LocalRouterProvider>
49 );