on 616e621 help sign in
bridge/src/lib/router.js
173 lines 4.8 kB history raw
1import * as ob from 'urbit-ob'
3import AcceptTransfer from '../views/AcceptTransfer'
4import CancelTransfer from '../views/CancelTransfer'
5import CreateGalaxy from '../views/CreateGalaxy'
6import GenKeyfile from '../views/GenKeyfile'
7import IssueChild from '../views/IssueChild'
8import Landing from '../views/Landing'
9import Network from '../views/Network'
10import Mnemonic from '../views/Mnemonic'
11import Ledger from '../views/Ledger'
12import Trezor from '../views/Trezor'
13import ViewPoint from '../views/ViewPoint'
14import SentTransaction from '../views/SentTransaction'
15import SetKeys from '../views/SetKeys'
16import {
17 SetManagementProxy,
18 SetSpawnProxy,
19 SetTransferProxy
20 } from '../views/SetProxy'
21import Point from '../views/Point'
22import Points from '../views/Points'
23import Shards from '../views/Shards'
24import Ticket from '../views/Ticket'
25import Transfer from '../views/Transfer'
26import Wallet from '../views/Wallet'
28import { addressFromSecp256k1Public } from './wallet'
29import { renderNetworkType } from './network'
30import { BRIDGE_ERROR } from './error'
32const ROUTE_NAMES = {
33 ACCEPT_TRANSFER: Symbol('ACCEPT_TRANSFER'),
34 CANCEL_TRANSFER: Symbol('CANCEL_TRANSFER'),
35 LANDING: Symbol('LANDING'),
36 NETWORK: Symbol('NETWORK'),
37 WALLET: Symbol('WALLET'),
38 MNEMONIC: Symbol('MNEMONIC'),
39 TICKET: Symbol('TICKET'),
40 SHARDS: Symbol('SHARDS'),
41 LEDGER: Symbol('LEDGER'),
42 TREZOR: Symbol('TREZOR'),
43 VIEW_SHIP: Symbol('VIEW_SHIP'),
44 SHIPS: Symbol('SHIPS'),
45 SHIP: Symbol('SHIP'),
46 SET_MANAGEMENT_PROXY: Symbol('SET_MANAGEMENT_PROXY'),
47 SET_SPAWN_PROXY: Symbol('SET_SPAWN_PROXY'),
48 SET_TRANSFER_PROXY: Symbol('SET_TRANSFER_PROXY'),
49 CREATE_GALAXY: Symbol('CREATE_GALAXY'),
50 ISSUE_CHILD: Symbol('ISSUE_CHILD'),
51 SET_KEYS: Symbol('SET_KEYS'),
52 TRANSFER: Symbol('TRANSFER'),
53 SENT_TRANSACTION: Symbol('SENT_TRANSACTION'),
54 GEN_KEYFILE: Symbol('GEN_KEYFILE'),
55 DEFAULT: Symbol('DEFAULT')
58const createRoutes = () => {
59 const routes = {}
60 routes[ROUTE_NAMES.ACCEPT_TRANSFER] = AcceptTransfer
61 routes[ROUTE_NAMES.CANCEL_TRANSFER] = CancelTransfer
62 routes[ROUTE_NAMES.LANDING] = Landing
63 routes[ROUTE_NAMES.NETWORK] = Network
64 routes[ROUTE_NAMES.WALLET] = Wallet
65 routes[ROUTE_NAMES.VIEW_SHIP] = ViewPoint
66 routes[ROUTE_NAMES.MNEMONIC] = Mnemonic
67 routes[ROUTE_NAMES.TICKET] = Ticket
68 routes[ROUTE_NAMES.SHARDS] = Shards
69 routes[ROUTE_NAMES.LEDGER] = Ledger
70 routes[ROUTE_NAMES.TREZOR] = Trezor
71 routes[ROUTE_NAMES.SHIPS] = Points
72 routes[ROUTE_NAMES.SHIP] = Point
73 routes[ROUTE_NAMES.SET_MANAGEMENT_PROXY] = SetManagementProxy
74 routes[ROUTE_NAMES.SET_SPAWN_PROXY] = SetSpawnProxy
75 routes[ROUTE_NAMES.SET_TRANSFER_PROXY] = SetTransferProxy
76 routes[ROUTE_NAMES.CREATE_GALAXY] = CreateGalaxy
77 routes[ROUTE_NAMES.ISSUE_CHILD] = IssueChild
78 routes[ROUTE_NAMES.SET_KEYS] = SetKeys
79 routes[ROUTE_NAMES.TRANSFER] = Transfer
80 routes[ROUTE_NAMES.SENT_TRANSACTION] = SentTransaction
81 routes[ROUTE_NAMES.DEFAULT] = Landing
82 routes[ROUTE_NAMES.GEN_KEYFILE] = GenKeyfile
83 return routes
86const ROUTES = createRoutes()
88const renderRoute = (props, route) => {
89 const { wallet, networkType, pointCursor } = props
90 return (
91 route === ROUTE_NAMES.LANDING
92 ? 'Bridge'
94 : route === ROUTE_NAMES.NETWORK
95 ? `${renderNetworkType(networkType)}`
97 : route === ROUTE_NAMES.WALLET
98 ? wallet.matchWith({
99 Nothing: () => 'Wallet',
100 Just: (wal) =>
101 addressFromSecp256k1Public(wal.value.publicKey)
102 })
104 : route === ROUTE_NAMES.MNEMONIC
105 ? 'Mnemonic'
107 : route === ROUTE_NAMES.TICKET
108 ? 'Urbit Ticket'
110 : route === ROUTE_NAMES.SHARDS
111 ? 'Urbit Ticket'
113 : route === ROUTE_NAMES.LEDGER
114 ? 'Ledger'
116 : route === ROUTE_NAMES.TREZOR
117 ? 'Trezor'
119 : route === ROUTE_NAMES.SHIPS
120 ? 'Points'
122 : route === ROUTE_NAMES.VIEW_SHIP
123 ? 'View'
125 : route === ROUTE_NAMES.SHIP
126 ? pointCursor.matchWith({
127 Just: (cursor) => ob.patp(cursor.value),
128 Nothing: () => {
129 throw BRIDGE_ERROR.MISSING_POINT
130 }
131 })
133 : route === ROUTE_NAMES.SET_TRANSFER_PROXY
134 || route === ROUTE_NAMES.SET_MANAGEMENT_PROXY
135 || route === ROUTE_NAMES.SET_SPAWN_PROXY
136 ? 'Set Proxy'
138 : route === ROUTE_NAMES.CREATE_GALAXY
139 ? 'Create Galaxy'
141 : route === ROUTE_NAMES.ISSUE_CHILD
142 ? 'Issue Child'
144 : route === ROUTE_NAMES.TRANSFER
145 ? 'Transfer'
147 : route === ROUTE_NAMES.ACCEPT_TRANSFER
148 ? 'Accept Transfer'
150 : route === ROUTE_NAMES.CANCEL_TRANSFER
151 ? 'Cancel Transfer'
153 : route === ROUTE_NAMES.GEN_KEYFILE
154 ? 'Keyfile'
156 : route === ROUTE_NAMES.SET_KEYS
157 ? 'Configure Keys'
159 : route === ROUTE_NAMES.SENT_TRANSACTION
160 ? 'Txn'
162 : 'Bridge'
163 )
166const router = (route) =>
167 ROUTES[route]
169export {
170 ROUTE_NAMES,
171 router,
172 renderRoute