on c17dcfd help sign in
bridge/src/views/Point.js
69 lines 2.0 kB history raw
1import React, { useCallback } from 'react';
2import Maybe from 'folktale/maybe';
3import * as need from 'lib/need';
4import { Grid } from 'indigo-react';
6import { usePointCursor } from 'store/pointCursor';
7import { useHistory } from 'store/history';
9import View from 'components/View';
10import Passport from 'components/Passport';
11import { ForwardButton } from 'components/Buttons';
12import FooterButton from 'components/FooterButton';
13import { matchBlinky } from 'components/Blinky';
15import useInvites from 'lib/useInvites';
16import { useSyncOwnedPoints } from 'lib/useSyncPoints';
17import { ROUTE_NAMES } from 'lib/routeNames';
19import Actions from './Point/Actions';
20import { useWallet } from 'store/wallet';
22export default function Point() {
23 const history = useHistory();
24 const { pointCursor } = usePointCursor();
25 const { wallet } = useWallet();
27 const point = need.point(pointCursor);
29 // fetch the invites for the current cursor
30 const { availableInvites } = useInvites(point);
31 const availableInvitesText = matchBlinky(availableInvites);
33 const showActions = Maybe.Just.hasInstance(wallet);
35 const goAdmin = useCallback(() => history.push(ROUTE_NAMES.ADMIN), [history]);
37 const goInvite = useCallback(() => history.push(ROUTE_NAMES.INVITE), [
38 history,
39 ]);
41 // sync the current cursor
42 useSyncOwnedPoints([point]);
44 return (
45 <View>
46 <Passport point={Maybe.Just(point)} />
47 <Grid className="pt2">
48 <Grid.Item full>
49 <ForwardButton onClick={goAdmin}>Admin</ForwardButton>
50 </Grid.Item>
51 <Grid.Divider />
52 <Grid.Item full>
53 <ForwardButton detail="Boot your computer" disabled>
54 Boot Arvo
55 </ForwardButton>
56 </Grid.Item>
57 {showActions && (
58 <Grid.Item full>
59 <Actions />
60 </Grid.Item>
61 )}
62 </Grid>
64 <FooterButton onClick={goInvite}>
65 Invite <sup>{availableInvitesText}</sup>
66 </FooterButton>
67 </View>
68 );