on c19b2a8 help sign in
bridge/src/views/Release.js
81 lines 2.0 kB history raw
1import React, { useState, useCallback } from 'react';
2import { H1, Grid } from 'indigo-react';
3import { Just } from 'folktale/maybe';
5import * as need from 'lib/need';
7import { useHistory } from 'store/history';
8import { useWallet } from 'store/wallet';
9import { usePointCursor } from 'store/pointCursor';
11import View from 'components/View';
12import Tabs from 'components/Tabs';
13import Crumbs from 'components/Crumbs';
14import CopiableAddress from 'components/CopiableAddress';
16import Active from 'views/Release/Active';
17import Locked from 'views/Release/Locked';
19const NAMES = {
20 ACTIVE: 'ACTIVE',
21 LOCKED: 'LOCKED',
22};
24const VIEWS = {
25 [NAMES.ACTIVE]: Active,
26 [NAMES.LOCKED]: Locked,
27};
28const OPTIONS = [
29 { text: 'Active', value: NAMES.ACTIVE },
30 { text: 'Locked', value: NAMES.LOCKED },
31];
32export default function ReleaseView() {
33 const { pop, push, names } = useHistory();
34 const { wallet } = useWallet();
36 const { setPointCursor } = usePointCursor();
38 const goPoint = useCallback(
39 point => {
40 setPointCursor(Just(point));
42 push(names.POINT);
43 },
44 [push, names, setPointCursor]
45 );
46 // inputs
47 const [currentTab, setCurrentTab] = useState(NAMES.ACTIVE);
49 const goActive = useCallback(() => {
50 setCurrentTab(NAMES.ACTIVE);
51 }, [setCurrentTab]);
53 const address = need.addressFromWallet(wallet);
55 return (
56 <View pop={pop} inset>
57 <Grid>
58 <Grid.Item full as={Crumbs} />
59 <Grid.Item full as={H1} className="f6 mono gray4 us-none pointer">
60 <CopiableAddress text={address}>{address}</CopiableAddress>
61 </Grid.Item>
63 <Grid.Item
64 full
65 as={Tabs}
66 className="mt1"
67 // Tabs
68 views={VIEWS}
69 options={OPTIONS}
70 currentTab={currentTab}
71 onTabChange={setCurrentTab}
72 // Tab extra
73 goPoint={goPoint}
74 goActive={goActive}
75 //
76 //
77 />
78 </Grid>
79 </View>
80 );