on f1ff0cf help sign in
bridge/src/views/Point/KeysAndMetadata.js
153 lines 3.8 kB history raw
1import React from 'react';
2import { H2, H4 } from '../../components/old/Base';
4import { ETH_ZERO_ADDR, eqAddr } from '../../lib/wallet';
5import { Grid } from 'indigo-react';
7const NULL_KEY =
8 '0x0000000000000000000000000000000000000000000000000000000000000000';
10const renderAddress = addr =>
11 eqAddr(addr, ETH_ZERO_ADDR) ? (
12 <div>{'(not set)'}</div>
13 ) : (
14 <div>
15 <div>
16 <code>{addr.slice(0, 14)}</code>
17 </div>
18 <div>
19 <code>{addr.slice(14, 28)}</code>
20 </div>
21 <div>
22 <code>{addr.slice(28)}</code>
23 </div>
24 </div>
25 );
27const renderNetworkKey = hex => {
28 const sl = i => hex.slice(i, i + 4);
29 const rowFrom = i => `${sl(i)}.${sl(i + 4)}.${sl(i + 8)}.${sl(i + 12)}`;
30 return hex === NULL_KEY ? (
31 <div>{'(not set)'}</div>
32 ) : (
33 <div>
34 <div>
35 <code>{hex.slice(0, 2)}</code>
36 </div>
37 <div>
38 <code>{rowFrom(2)}</code>
39 </div>
40 <div>
41 <code>{rowFrom(18)}</code>
42 </div>
43 <div>
44 <code>{rowFrom(34)}</code>
45 </div>
46 <div>
47 <code>{rowFrom(50)}</code>
48 </div>
49 </div>
50 );
51};
53const KeysAndMetadata = props => {
54 const { pointDetails } = props;
56 return (
57 <Grid>
58 <Grid.Item full>
59 <H2>{'Ownership and Proxy Addresses'}</H2>
60 </Grid.Item>
61 <Grid.Item fourth={1}>
62 <H4>{'Owner'}</H4>
63 {pointDetails.matchWith({
64 Nothing: () => <div />,
65 Just: deets => renderAddress(deets.value.owner),
66 })}
67 </Grid.Item>
68 <Grid.Item fourth={2}>
69 <H4>{'Transfer Proxy'}</H4>
70 {pointDetails.matchWith({
71 Nothing: () => <div />,
72 Just: deets => renderAddress(deets.value.transferProxy),
73 })}
74 </Grid.Item>
75 <Grid.Item fourth={3}>
76 <H4>{'Spawn Proxy'}</H4>
77 {pointDetails.matchWith({
78 Nothing: () => <div />,
79 Just: deets => renderAddress(deets.value.spawnProxy),
80 })}
81 </Grid.Item>
82 <Grid.Item fourth={4}>
83 <H4>{'Mgmt Proxy'}</H4>
84 {pointDetails.matchWith({
85 Nothing: () => <div />,
86 Just: deets => renderAddress(deets.value.managementProxy),
87 })}
88 </Grid.Item>
89 <Grid.Item full>
90 <UrbitNetworking pointDetails={pointDetails} />
91 </Grid.Item>
92 </Grid>
93 );
94};
96const UrbitNetworking = props => {
97 const { pointDetails } = props;
99 const booted = pointDetails.matchWith({
100 Nothing: _ => false,
101 Just: details => details.value.keyRevisionNumber > 0,
102 });
104 const body = !booted ? (
105 <div>{'(not set)'}</div>
106 ) : (
107 <Grid>
108 <Grid.Item third={1}>
109 <H4>{'Authentication'}</H4>
110 {pointDetails.matchWith({
111 Nothing: () => <div />,
112 Just: deets => renderNetworkKey(deets.value.authenticationKey),
113 })}
114 </Grid.Item>
115 <Grid.Item third={2}>
116 <H4>{'Encryption'}</H4>
117 {pointDetails.matchWith({
118 Nothing: () => <div />,
119 Just: deets => renderNetworkKey(deets.value.encryptionKey),
120 })}
121 </Grid.Item>
122 <Grid.Item third={3}>
123 <H4>{'Revision'}</H4>
124 {pointDetails.matchWith({
125 Nothing: () => '-',
126 Just: deets => deets.value.keyRevisionNumber,
127 })}
129 <H4>{'Continuity era'}</H4>
130 {pointDetails.matchWith({
131 Nothing: () => '-',
132 Just: deets => deets.value.continuityNumber,
133 })}
135 <H4>{'Crypto suite version'}</H4>
136 {pointDetails.matchWith({
137 Nothing: () => '-',
138 Just: deets => deets.value.cryptoSuiteVersion,
139 })}
140 </Grid.Item>
141 </Grid>
142 );
144 return (
145 <div>
146 <H2>{'Public Keys'}</H2>
148 {body}
149 </div>
150 );
151};
153export default KeysAndMetadata;