on fee879f help sign in
bridge/src/views/Reticket.js
101 lines 2.4 kB history raw
1import React, { useState } from 'react';
2import { size } from 'lodash';
3import * as need from 'lib/need';
4import ob from 'urbit-ob';
5import { Just, Nothing } from 'folktale/maybe';
6import { Grid } from 'indigo-react';
8import { usePointCursor } from 'store/pointCursor';
9// import { usePointCache } from 'store/pointCache';
11import View from 'components/View';
12import MiniBackButton from 'components/MiniBackButton';
13import { LocalRouterProvider } from 'lib/LocalRouter';
14import Crumbs from 'components/Crumbs';
16import useRouter from 'lib/useRouter';
18import { useHistory } from 'store/history';
20import Confirm from './Reticket/Confirm';
21import Download from './Reticket/Download';
22import Verify from './Reticket/Verify';
23import DoReticket from './Reticket/DoReticket';
25const STEP_NAMES = {
26 CONFIRM: 'CONFIRM',
27 DOWNLOAD: 'DOWNLOAD',
28 VERIFY: 'VERIFY',
29 RETICKET: 'RETICKET',
30};
32const STEP_VIEWS = {
33 CONFIRM: Confirm,
34 DOWNLOAD: Download,
35 VERIFY: Verify,
36 RETICKET: DoReticket,
37};
39const STEP_MAX = size(STEP_NAMES);
41export default function Reticket() {
42 const history = useHistory();
43 const { Route, ...innerRouter } = useRouter({
44 names: STEP_NAMES,
45 views: STEP_VIEWS,
46 initialRoutes: [{ key: STEP_NAMES.CONFIRM }],
47 });
48 const { pointCursor } = usePointCursor();
49 const point = need.point(pointCursor);
50 const name = ob.patp(point);
52 const [newWallet, setNewWallet] = useState(Nothing());
54 //TODO step # from Route?
55 const stepNumber = 1;
57 const storeNewWallet = (wallet, paper) => {
58 setNewWallet(
59 Just({
60 wallet,
61 paper,
62 })
63 );
64 };
66 const completed = () => {
67 history.pop();
68 };
70 return (
71 <LocalRouterProvider value={innerRouter}>
72 <View>
73 <Crumbs
74 routes={[
75 {
76 text: name,
77 action: () => {
78 history.pop();
79 return history.pop();
80 },
81 },
82 {
83 text: 'Admin',
84 action: () => history.pop(),
85 },
86 ]}
87 />
88 <MiniBackButton onClick={innerRouter.pop} />
89 Step {stepNumber} of {STEP_MAX}
90 <Route
91 STEP_NAMES={STEP_NAMES}
92 newWallet={newWallet}
93 //
94 storeNewWallet={storeNewWallet}
95 //
96 completed={completed}
97 />
98 </View>
99 </LocalRouterProvider>
100 );