on 06a779f help sign in
bridge/src/lib/router.js
148 lines 4.9 kB history raw
1import React from 'react';
2import * as ob from 'urbit-ob';
3import * as need from './need';
5import Landing from '../views/Landing';
6import InviteTicket from '../views/InviteTicket';
7import InvitesManage from '../views/InvitesManage.js';
8import Login from '../views/Login.js';
9import PointHome from '../views/PointHome.js';
10import AcceptTransfer from '../views/AcceptTransfer';
11import CancelTransfer from '../views/CancelTransfer';
12import CreateGalaxy from '../views/CreateGalaxy';
13import GenKeyfile from '../views/GenKeyfile';
14import IssueChild from '../views/IssueChild';
15import Network from '../views/Network';
16import Mnemonic from '../views/Mnemonic';
17import Ledger from '../views/Ledger';
18import Trezor from '../views/Trezor';
19import PrivateKey from '../views/PrivateKey';
20import Keystore from '../views/Keystore';
21import ViewPoint from '../views/ViewPoint';
22import SentTransaction from '../views/SentTransaction';
23import SetKeys from '../views/SetKeys';
24import {
25 SetManagementProxy,
26 SetSpawnProxy,
27 SetTransferProxy,
28} from '../views/SetProxy';
29import Point from '../views/Point';
30import Points from '../views/Points';
31import Shards from '../views/Shards';
32import Ticket from '../views/Ticket';
33import Transfer from '../views/Transfer';
34import Wallet from '../views/Wallet';
35import Invite from 'views/Invite';
37import { EthereumWallet } from './wallet';
38import { renderNetworkType } from './network';
39import { ROUTE_NAMES } from './routeNames';
41export const ROUTES = {
42 [ROUTE_NAMES.DEFAULT]: Landing,
43 [ROUTE_NAMES.LANDING]: Landing,
44 [ROUTE_NAMES.INVITE_TICKET]: InviteTicket,
45 [ROUTE_NAMES.INVITE]: Invite,
46 [ROUTE_NAMES.INVITES_MANAGE]: InvitesManage,
47 [ROUTE_NAMES.LOGIN]: Login,
48 [ROUTE_NAMES.POINT_HOME]: PointHome,
49 [ROUTE_NAMES.ACCEPT_TRANSFER]: AcceptTransfer,
50 [ROUTE_NAMES.CANCEL_TRANSFER]: CancelTransfer,
51 [ROUTE_NAMES.NETWORK]: Network,
52 [ROUTE_NAMES.WALLET]: Wallet,
53 [ROUTE_NAMES.VIEW_POINT]: ViewPoint,
54 [ROUTE_NAMES.MNEMONIC]: Mnemonic,
55 [ROUTE_NAMES.TICKET]: Ticket,
56 [ROUTE_NAMES.SHARDS]: Shards,
57 [ROUTE_NAMES.LEDGER]: Ledger,
58 [ROUTE_NAMES.TREZOR]: Trezor,
59 [ROUTE_NAMES.PRIVATE_KEY]: PrivateKey,
60 [ROUTE_NAMES.KEYSTORE]: Keystore,
61 [ROUTE_NAMES.POINTS]: Points,
62 [ROUTE_NAMES.POINT]: Point,
63 [ROUTE_NAMES.SET_MANAGEMENT_PROXY]: SetManagementProxy,
64 [ROUTE_NAMES.SET_SPAWN_PROXY]: SetSpawnProxy,
65 [ROUTE_NAMES.SET_TRANSFER_PROXY]: SetTransferProxy,
66 [ROUTE_NAMES.CREATE_GALAXY]: CreateGalaxy,
67 [ROUTE_NAMES.ISSUE_CHILD]: IssueChild,
68 [ROUTE_NAMES.SET_KEYS]: SetKeys,
69 [ROUTE_NAMES.TRANSFER]: Transfer,
70 [ROUTE_NAMES.SENT_TRANSACTION]: SentTransaction,
71 [ROUTE_NAMES.GEN_KEYFILE]: GenKeyfile,
72};
74export const getRouteBreadcrumb = ({
75 pointCursor,
76 networkType,
77 wallet,
78}) => route => {
79 switch (route.name) {
80 case ROUTE_NAMES.INVITE_TICKET:
81 return 'Invite code';
82 case ROUTE_NAMES.INVITE_TRANSACTIONS:
83 return 'Setting up new wallet';
84 case ROUTE_NAMES.INVITE:
85 return 'Send invites';
86 case ROUTE_NAMES.INVITES_MANAGE:
87 return 'Manage invites';
88 case ROUTE_NAMES.LOGIN:
89 return 'Login to Bridge';
90 case ROUTE_NAMES.POINT_HOME:
91 return 'Overview: ' + ob.patp(need.pointCursor({ pointCursor }));
92 case ROUTE_NAMES.NETWORK:
93 return renderNetworkType(networkType);
94 case ROUTE_NAMES.WALLET:
95 return wallet.matchWith({
96 Nothing: () => 'Wallet',
97 Just: wal =>
98 wal.value instanceof EthereumWallet ? (
99 <span className="text-mono">{wal.value.address}</span>
100 ) : (
101 <span className="text-mono">{wal.value.address}</span>
102 ),
103 });
104 case ROUTE_NAMES.MNEMONIC:
105 return 'Mnemonic';
106 case ROUTE_NAMES.TICKET:
107 return 'Urbit Ticket';
108 case ROUTE_NAMES.SHARDS:
109 return 'Urbit Ticket';
110 case ROUTE_NAMES.LEDGER:
111 return 'Ledger';
112 case ROUTE_NAMES.TREZOR:
113 return 'Trezor';
114 case ROUTE_NAMES.PRIVATE_KEY:
115 return 'Private Key';
116 case ROUTE_NAMES.KEYSTORE:
117 return 'Keystore File';
118 case ROUTE_NAMES.POINTS:
119 return 'Points';
120 case ROUTE_NAMES.VIEW_POINT:
121 return 'View';
122 case ROUTE_NAMES.POINT:
123 return ob.patp(need.pointCursor(pointCursor));
124 case ROUTE_NAMES.SET_TRANSFER_PROXY:
125 case ROUTE_NAMES.SET_MANAGEMENT_PROXY:
126 case ROUTE_NAMES.SET_SPAWN_PROXY:
127 return 'Set Proxy';
128 case ROUTE_NAMES.CREATE_GALAXY:
129 return 'Create Galaxy';
130 case ROUTE_NAMES.ISSUE_CHILD:
131 return 'Issue Child';
132 case ROUTE_NAMES.TRANSFER:
133 return 'Transfer';
134 case ROUTE_NAMES.ACCEPT_TRANSFER:
135 return 'Accept Transfer';
136 case ROUTE_NAMES.CANCEL_TRANSFER:
137 return 'Cancel Transfer';
138 case ROUTE_NAMES.GEN_KEYFILE:
139 return 'Keyfile';
140 case ROUTE_NAMES.SET_KEYS:
141 return 'Configure Keys';
142 case ROUTE_NAMES.SENT_TRANSACTION:
143 return 'Txn';
144 case ROUTE_NAMES.LANDING:
145 default:
146 return 'Bridge';
147 }
148};