@@ -1,52 +1,72 @@
1−import React, { useState } from 'react';
1+import React, { useCallback, useState } from 'react';
2import { Just, Nothing } from 'folktale/maybe';
2import { Just, Nothing } from 'folktale/maybe';
3import * as need from 'lib/need';
3import * as need from 'lib/need';
5import { usePointCursor } from 'store/pointCursor';
5import { usePointCursor } from 'store/pointCursor';
7−import View from 'components/View';
8−import { DownloadButton } from 'components/Buttons';
7+import { DownloadButton, RestartButton } from 'components/Buttons';
9import PaperRenderer from 'components/PaperRenderer';
8import PaperRenderer from 'components/PaperRenderer';
11import { downloadWallet } from 'lib/invite';
10import { downloadWallet } from 'lib/invite';
13import { useWallet } from 'store/wallet';
12import { useWallet } from 'store/wallet';
13+import { Grid, Text } from 'indigo-react';
14+import ViewHeader from 'components/ViewHeader';
15+import { useLocalRouter } from 'lib/LocalRouter';
15export default function AdminRedownload() {
17export default function AdminRedownload() {
16 const { urbitWallet } = useWallet();
18 const { urbitWallet } = useWallet();
17 const { pointCursor } = usePointCursor();
19 const { pointCursor } = usePointCursor();
20+ const { pop } = useLocalRouter();
22+ const _urbitWallet = need.wallet(urbitWallet);
18 const point = need.point(pointCursor);
23 const point = need.point(pointCursor);
20 const [paper, setPaper] = useState(Nothing());
25 const [paper, setPaper] = useState(Nothing());
26+ const [downloaded, setDownloaded] = useState(false);
22− const doDownload = () => {
28+ const doDownload = useCallback(() => {
23 downloadWallet(paper.value);
29 downloadWallet(paper.value);
24− };
30+ setDownloaded(true);
31+ }, [paper, setDownloaded]);
33+ const goBack = useCallback(() => pop(), [pop]);
38+ <Grid.Item full as={ViewHeader}>
41+ <Grid.Item full as={Text}>
42+ After you’ve downloaded your passport, back up the ticket manually or
43+ store on a trusted device.
46+ <Grid.Item full as={RestartButton} solid onClick={goBack}>
54+ disabled={Nothing.hasInstance(paper)}
55+ onClick={doDownload}>
26− const paperRenderer = paper.matchWith({
56+ {paper.matchWith({
27− Nothing: () => null,
57+ Nothing: () => 'Printing and folding...',
28− Just: p => (
58+ Just: _ => 'Download paper wallet',
29 <PaperRenderer
63 <PaperRenderer
30 point={point}
64 point={point}
31− wallet={urbitWallet.value}
65+ wallet={_urbitWallet}
32 callback={paper => {
66 callback={paper => {
33 setPaper(Just(paper));
67 setPaper(Just(paper));
42− disabled={Nothing.hasInstance(paper)}
43− onClick={doDownload}>
45− Nothing: () => 'Printing and folding...',
46− Just: _ => 'Download paper wallet',