on d760cbf help sign in
bridge/src/views/Admin/AdminHome.js
100 lines 3.0 kB history raw
1import React, { useCallback } from 'react';
2import { Just } from 'folktale/maybe';
3import { Grid } from 'indigo-react';
4import * as need from 'lib/need';
6import { ForwardButton, DownloadButton } from 'components/Buttons';
8import { useHistory } from 'store/history';
9import { useWallet } from 'store/wallet';
10import { usePointCursor } from 'store/pointCursor';
12import useKeyfileGenerator from 'lib/useKeyfileGenerator';
13import usePermissionsForPoint from 'lib/usePermissionsForPoint';
15import FooterButton from 'components/FooterButton';
16import ViewHeader from 'components/ViewHeader';
17import Blinky from 'components/Blinky';
18import { useLocalRouter } from 'lib/LocalRouter';
20export default function AdminHome() {
21 const history = useHistory();
22 const { push, names } = useLocalRouter();
23 const { urbitWallet, wallet } = useWallet();
24 const { pointCursor } = usePointCursor();
26 const point = need.point(pointCursor);
27 const address = need.addressFromWallet(wallet);
28 const { isOwner, canTransfer } = usePermissionsForPoint(address, point);
30 const {
31 generating: generatingKeyfile,
32 available: keyfileAvailable,
33 generateAndDownload: generateAndDownloadKeyfile,
34 } = useKeyfileGenerator(point);
36 const goRedownload = useCallback(() => push(names.REDOWNLOAD), [push, names]);
37 const goReticket = useCallback(() => push(names.RETICKET), [push, names]);
38 const goEditPermissions = useCallback(() => push(names.EDIT_PERMISSIONS), [
39 push,
40 names,
41 ]);
42 const goTransfer = useCallback(() => history.push(history.names.TRANSFER), [
43 history,
44 ]);
46 const canDownloadPassport = Just.hasInstance(urbitWallet);
48 return (
49 <>
50 <Grid>
51 <Grid.Item full as={ViewHeader}>
52 Admin
53 </Grid.Item>
55 <Grid.Item
56 full
57 as={ForwardButton}
58 disabled={!canDownloadPassport}
59 onClick={goRedownload}
60 detail="Re-download your paper wallet">
61 Download Passport
62 </Grid.Item>
63 <Grid.Divider />
64 <Grid.Item
65 full
66 as={DownloadButton}
67 disabled={!keyfileAvailable}
68 accessory={generatingKeyfile ? <Blinky /> : undefined}
69 onClick={generateAndDownloadKeyfile}
70 detail="Download your Arvo Keyfile">
71 Download Arvo Keyfile
72 </Grid.Item>
73 <Grid.Divider />
74 <Grid.Item
75 full
76 as={ForwardButton}
77 disabled={!isOwner}
78 onClick={goReticket}
79 detail="Move to brand new wallet, resetting all permissions">
80 Reticket
81 </Grid.Item>
82 <Grid.Divider />
83 <Grid.Item
84 full
85 as={ForwardButton}
86 onClick={goEditPermissions}
87 detail="Proxies, networking keys, etc.">
88 Edit Permissions
89 </Grid.Item>
90 <Grid.Divider />
91 </Grid>
92 <FooterButton
93 detail="Transfer this identity to a new owner"
94 disabled={!canTransfer}
95 onClick={goTransfer}>
96 Transfer
97 </FooterButton>
98 </>
99 );