on c262e73 help sign in
bridge/src/views/Reticket.js
97 lines 2.2 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';
7import { usePointCursor } from 'store/pointCursor';
9import View from 'components/View';
10import MiniBackButton from 'components/MiniBackButton';
11import { LocalRouterProvider } from 'lib/LocalRouter';
12import Crumbs from 'components/Crumbs';
14import useRouter from 'lib/useRouter';
16import { useHistory } from 'store/history';
18import Confirm from './Reticket/Confirm';
19import Download from './Reticket/Download';
20import Verify from './Reticket/Verify';
21import DoReticket from './Reticket/DoReticket';
23const NAMES = {
24 CONFIRM: 'CONFIRM',
25 DOWNLOAD: 'DOWNLOAD',
26 VERIFY: 'VERIFY',
27 RETICKET: 'RETICKET',
28};
30const VIEWS = {
31 CONFIRM: Confirm,
32 DOWNLOAD: Download,
33 VERIFY: Verify,
34 RETICKET: DoReticket,
35};
37const STEP_MAX = size(NAMES);
39export default function Reticket() {
40 const history = useHistory();
41 const { Route, ...innerRouter } = useRouter({
42 names: NAMES,
43 views: VIEWS,
44 initialRoutes: [{ key: NAMES.CONFIRM }],
45 });
46 const { pointCursor } = usePointCursor();
47 const point = need.point(pointCursor);
48 const name = ob.patp(point);
50 const [newWallet, setNewWallet] = useState(Nothing());
52 //TODO step # from Route?
53 const stepNumber = 1;
55 const storeNewWallet = (wallet, paper) => {
56 setNewWallet(
57 Just({
58 wallet,
59 paper,
60 })
61 );
62 };
64 const completed = () => {
65 history.pop();
66 };
68 return (
69 <LocalRouterProvider value={innerRouter}>
70 <View>
71 <Crumbs
72 routes={[
73 {
74 text: name,
75 action: () => {
76 return history.pop(2);
77 },
78 },
79 {
80 text: 'Admin',
81 action: () => history.pop(),
82 },
83 ]}
84 />
85 <MiniBackButton onClick={innerRouter.pop} />
86 Step {stepNumber} of {STEP_MAX}
87 <Route
88 newWallet={newWallet}
89 //
90 storeNewWallet={storeNewWallet}
91 //
92 completed={completed}
93 />
94 </View>
95 </LocalRouterProvider>
96 );