@@ -7,19 +7,10 @@ import * as azimuth from 'azimuth-js'
7import PointList from '../components/PointList'
7import PointList from '../components/PointList'
8import ReactSVGComponents from '../components/ReactSVGComponents'
8import ReactSVGComponents from '../components/ReactSVGComponents'
9import KeysAndMetadata from './Point/KeysAndMetadata'
9import KeysAndMetadata from './Point/KeysAndMetadata'
10+import Actions from './Point/Actions'
10import { BRIDGE_ERROR } from '../lib/error'
11import { BRIDGE_ERROR } from '../lib/error'
11−import { ROUTE_NAMES } from '../lib/router'
12−import { Row, Col, H1, H2, H3, P } from '../components/Base'
13−import { Button } from '../components/Base'
12+import { Row, Col, H1, H3 } from '../components/Base'
17− addressFromSecp256k1Public,
19− } from '../lib/wallet'
21−const isPlanet = point =>
22− parseInt(point, 10) > 65535
24class Point extends React.Component {
15class Point extends React.Component {
@@ -84,12 +75,6 @@ class Point extends React.Component {
85 const { spawned } = this.state
76 const { spawned } = this.state
87− const addr = wallet.matchWith({
88− Just: (wal) => addressFromSecp256k1Public(wal.value.publicKey),
90− throw BRIDGE_ERROR.MISSING_WALLET
94 const point = pointCursor.matchWith({
79 const point = pointCursor.matchWith({
95 Just: (cursor) => cursor.value,
80 Just: (cursor) => cursor.value,
@@ -113,93 +98,11 @@ class Point extends React.Component {
114 const online = Maybe.Just.hasInstance(web3)
99 const online = Maybe.Just.hasInstance(web3)
116− const canSetTransferProxy = pointDetails.matchWith({
101+ const authenticated = wallet.matchWith({
117− // also should check is addr is operator
102+ Just: _ => true,
118− Nothing: _ => false,
103+ Nothing: _ => false
119− Just: details => eqAddr(details.value.owner, addr)
122− const canSetSpawnProxy = pointDetails.matchWith({
123− Nothing: _ => false,
125− eqAddr(details.value.owner, addr) && details.value.active
129− const canSetManagementProxy = pointDetails.matchWith({
130− Nothing: _ => false,
132− eqAddr(details.value.owner, addr) && details.value.active
135− const canConfigureKeys = pointDetails.matchWith({
136− Nothing: _ => false,
139− eqAddr(details.value.owner, addr)
140− || eqAddr(details.value.managementProxy, addr)
142− return canManage && details.value.active
146− const canIssueChild =
147− pointDetails.matchWith({
148− Nothing: () => false,
149− Just: (details) => {
150− const hasPermission =
151− eqAddr(details.value.owner, addr)
152− || eqAddr(details.value.spawnProxy, addr)
155− details.value.keyRevisionNumber > 0
157− const isNotPlanet = !isPlanet(point)
159− return hasPermission && isBooted && isNotPlanet
163− const planet = isPlanet(point)
166− pointDetails.matchWith({
167− Nothing: () => false,
169− eqAddr(deets.value.transferProxy, addr) ||
170− eqAddr(deets.value.owner, addr)
173− const canGenKeyfile =
174− pointDetails.matchWith({
175− Nothing: () => false,
177− const hasPermission =
178− eqAddr(deets.value.owner, addr)
179− || eqAddr(deets.value.managementProxy, addr)
182− deets.value.keyRevisionNumber > 0
184− return hasPermission && isBooted
188− const canAcceptTransfer =
189− pointDetails.matchWith({
190− Nothing: () => false,
192− eqAddr(deets.value.transferProxy, addr)
195− const canCancelTransfer =
196− pointDetails.matchWith({
197− Nothing: () => false,
199− eqAddr(deets.value.owner, addr) &&
200− !eqAddr(deets.value.transferProxy, ETH_ZERO_ADDR)
203 const routeHandler = route => {
106 const routeHandler = route => {
204 popRoute()
107 popRoute()
205 pushRoute(route)
108 pushRoute(route)
@@ -219,141 +122,26 @@ class Point extends React.Component {
222− const displayReminder = pointDetails.matchWith({
223− Nothing: () => false,
225− return deets.value.encryptionKey === CURVE_ZERO_ADDR
226− && deets.value.authenticationKey === CURVE_ZERO_ADDR
234 <div className={'mt-12 pt-6'}>
129 <div className={'mt-12 pt-6'}>
235 { sigil }
130 { sigil }
238 <H1><code>{ name }</code></H1>
132 <H1><code>{ name }</code></H1>
240− <H2>{ 'Actions' }</H2>
243− displayReminder
134+ authenticated
244− ? <P>{`Before you can issue child points or generate your Arvo
135+ ? <Actions pushRoute={ pushRoute } online={ online } point={ point } pointDetails={ pointDetails } wallet={ wallet }/>
245− keyfile, you need to set your public keys.`}</P>
136+ : null
250− <Col className={'flex flex-column items-start col-md-4'}>
254− disabled={ (online || planet) && !canIssueChild }
256− pushRoute(ROUTE_NAMES.ISSUE_CHILD)
265− disabled={ !canAcceptTransfer }
267− pushRoute(ROUTE_NAMES.ACCEPT_TRANSFER)
270− { 'Accept incoming transfer' }
276− disabled={ online && !canCancelTransfer }
278− pushRoute(ROUTE_NAMES.CANCEL_TRANSFER)
281− { 'Cancel outgoing transfer' }
287− disabled={ !canGenKeyfile }
289− pushRoute(ROUTE_NAMES.GEN_KEYFILE)
292− { 'Generate Arvo keyfile' }
296− <Col className={'flex flex-column items-start col-md-4'}>
299− disabled={ online && !canSetSpawnProxy }
303− pushRoute(ROUTE_NAMES.SET_SPAWN_PROXY)
306− { 'Set spawn proxy' }
310− disabled={ online && !canSetManagementProxy }
314− pushRoute(ROUTE_NAMES.SET_MANAGEMENT_PROXY)
317− { 'Set management proxy' }
321− disabled={ online && !canConfigureKeys }
325− pushRoute(ROUTE_NAMES.SET_KEYS)
328− { 'Set public keys' }
332− disabled={ online && !canTransfer }
336− pushRoute(ROUTE_NAMES.TRANSFER)
349 ? <KeysAndMetadata pointDetails={ pointDetails } />
141 ? <KeysAndMetadata pointDetails={ pointDetails } />
350 : <div />
142 : <div />
355 { issuedPointList }
144 { issuedPointList }