on abbbcbc help sign in
bridge/src/views/Admin/AdminRedownload.js
74 lines 2.2 kB history raw
1import React, { useCallback, useState } from 'react';
2import { Just, Nothing } from 'folktale/maybe';
3import * as need from 'lib/need';
5import { usePointCursor } from 'store/pointCursor';
7import { DownloadButton, RestartButton } from 'components/Buttons';
8import PaperRenderer from 'components/PaperRenderer';
10import { downloadWallet } from 'lib/invite';
12import { useWallet } from 'store/wallet';
13import { Grid, P } from 'indigo-react';
14import ViewHeader from 'components/ViewHeader';
15import { useLocalRouter } from 'lib/LocalRouter';
16import MiniBackButton from 'components/MiniBackButton';
18export default function AdminRedownload() {
19 const { urbitWallet } = useWallet();
20 const { pointCursor } = usePointCursor();
21 const { pop } = useLocalRouter();
23 const _urbitWallet = need.wallet(urbitWallet);
24 const point = need.point(pointCursor);
26 const [paper, setPaper] = useState(Nothing());
27 const [downloaded, setDownloaded] = useState(false);
29 const doDownload = useCallback(() => {
30 downloadWallet(paper.value);
31 setDownloaded(true);
32 }, [paper, setDownloaded]);
34 const goBack = useCallback(() => pop(), [pop]);
36 return (
37 <>
38 <Grid>
39 <Grid.Item full as={MiniBackButton} onClick={() => pop()} />
40 <Grid.Item full as={ViewHeader}>
41 Download Passport
42 </Grid.Item>
43 <Grid.Item full as={P}>
44 After you’ve downloaded your passport, back up the ticket manually or
45 store on a trusted device.
46 </Grid.Item>
47 {downloaded ? (
48 <Grid.Item full as={RestartButton} solid onClick={goBack}>
49 Done
50 </Grid.Item>
51 ) : (
52 <Grid.Item
53 full
54 as={DownloadButton}
55 solid
56 disabled={Nothing.hasInstance(paper)}
57 onClick={doDownload}>
58 {paper.matchWith({
59 Nothing: () => 'Printing and folding...',
60 Just: _ => 'Download paper wallet',
61 })}
62 </Grid.Item>
63 )}
64 </Grid>
65 <PaperRenderer
66 point={point}
67 wallet={_urbitWallet}
68 callback={paper => {
69 setPaper(Just(paper));
70 }}
71 />
72 </>
73 );