on abbbcbc help sign in
bridge/src/views/Admin/AdminReticket.js
64 lines 1.7 kB history raw
1import React, { useCallback, useState } from 'react';
2import { Just, Nothing } from 'folktale/maybe';
3import { Grid, Flex } from 'indigo-react';
5import { LocalRouterProvider } from 'lib/LocalRouter';
6import useRouter from 'lib/useRouter';
8import MiniBackButton from 'components/MiniBackButton';
9import Steps from 'components/Steps';
11import ReticketConfirm from './Reticket/ReticketConfirm';
12import ReticketDownload from './Reticket/ReticketDownload';
13import ReticketVerify from './Reticket/ReticketVerify';
14import ReticketExecute from './Reticket/ReticketExecute';
16const NAMES = {
17 CONFIRM: 'CONFIRM',
18 DOWNLOAD: 'DOWNLOAD',
19 VERIFY: 'VERIFY',
20 EXECUTE: 'EXECUTE',
21};
23const VIEWS = {
24 CONFIRM: ReticketConfirm,
25 DOWNLOAD: ReticketDownload,
26 VERIFY: ReticketVerify,
27 EXECUTE: ReticketExecute,
28};
30const STEPS = [NAMES.CONFIRM, NAMES.DOWNLOAD, NAMES.VERIFY, NAMES.RETICKET];
32export default function AdminReticket() {
33 const { Route, ...router } = useRouter({
34 names: NAMES,
35 views: VIEWS,
36 initialRoutes: [{ key: NAMES.CONFIRM }],
37 });
39 const [newWallet, _setNewWallet] = useState(Nothing());
41 const setNewWallet = useCallback(
42 (wallet, paper) => {
43 _setNewWallet(
44 Just({
45 wallet,
46 paper,
47 })
48 );
49 },
50 [_setNewWallet]
51 );
53 return (
54 <LocalRouterProvider value={router}>
55 <Grid>
56 <Grid.Item full as={Flex} row justify="between" align="center">
57 <Flex.Item as={MiniBackButton} onClick={() => router.pop()} />
58 <Flex.Item as={Steps} num={router.size} total={STEPS.length} />
59 </Grid.Item>
60 </Grid>
61 <Route newWallet={newWallet} setNewWallet={setNewWallet} />
62 </LocalRouterProvider>
63 );