on c19b2a8 help sign in
bridge/src/views/Admin/AdminRedownload.js
72 lines 2.1 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 PaperBuilder from 'components/PaperBuilder';
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';
17export default function AdminRedownload() {
18 const { urbitWallet } = useWallet();
19 const { pointCursor } = usePointCursor();
20 const { pop } = useLocalRouter();
22 const _urbitWallet = need.wallet(urbitWallet);
23 const point = need.point(pointCursor);
25 const [paper, setPaper] = useState(Nothing());
26 const [downloaded, setDownloaded] = useState(false);
28 const doDownload = useCallback(() => {
29 downloadWallet(paper.value);
30 setDownloaded(true);
31 }, [paper, setDownloaded]);
33 const goBack = useCallback(() => pop(), [pop]);
35 return (
36 <>
37 <Grid>
38 <Grid.Item full as={ViewHeader}>
39 Download Passport
40 </Grid.Item>
41 <Grid.Item full as={P}>
42 After you’ve downloaded your passport, back up the ticket manually or
43 store on a trusted device.
44 </Grid.Item>
45 {downloaded ? (
46 <Grid.Item full as={RestartButton} solid onClick={goBack}>
47 Done
48 </Grid.Item>
49 ) : (
50 <Grid.Item
51 full
52 as={DownloadButton}
53 solid
54 disabled={Nothing.hasInstance(paper)}
55 onClick={doDownload}>
56 {paper.matchWith({
57 Nothing: () => 'Printing and folding...',
58 Just: _ => 'Download paper wallet',
59 })}
60 </Grid.Item>
61 )}
62 </Grid>
63 <PaperBuilder
64 point={point}
65 wallets={[_urbitWallet]}
66 callback={paper => {
67 setPaper(Just(paper));
68 }}
69 />
70 </>
71 );