1import React, { useCallback, useState } from 'react';
2import { Grid, ErrorText, Flex } from 'indigo-react';
3import { get } from 'lodash';
4import { FORM_ERROR } from 'final-form';
6import useCopiable from 'lib/useCopiable';
7import useInviter from 'lib/useInviter';
9import ProgressButton from 'components/ProgressButton';
10import { ForwardButton } from 'components/Buttons';
11import NeedFundsNotice from 'components/NeedFundsNotice';
13import { hasErrors } from 'form/validators';
14import { WARNING } from 'form/helpers';
22const InviteUrl = ({ setSubmitting }) => {
23 const { txStatus, needFunds, invites, generateInvites } = useInviter();
25 const [error, setError] = useState();
27 const generateInvite = useCallback(async () => {
29 const { errors } = await generateInvites(1);
30 if (hasErrors(errors)) {
34 }, [generateInvites, setSubmitting]);
36 const renderGenerateButton = useCallback(() => {
39 <Grid.Item full className="mt4 p3 bg-red3 white f5">
40 Error generating invite
52 onClick={() => generateInvite()}>
72 }, [txStatus, error, generateInvite]);
74 const url = `https://bridge.urbit.org/#${get(invites, '[0].ticket', '').slice(
78 const [doCopy, didCopy] = useCopiable(url);
81 <Grid.Item full as={Grid} gap={3}>
82 {invites.length > 0 && (
83 <Grid.Item as={Flex} full col>
84 <Flex.Item full className="b-gray3 b1 mt4 mb1 p1 flex flex-center">
85 <div className="flex1 ml1 f6">{url}</div>
87 className="p2 bg-black white pointer-hover f6"
88 onClick={() => doCopy()}>
89 {didCopy ? 'Copied' : 'Copy'}
92 <Flex.Item full className="f6 mb4 gray5">
93 Your invite link expires after consumption.
97 {invites.length === 0 && renderGenerateButton()}
98 {needFunds && <Grid.Item full as={NeedFundsNotice} {...needFunds} />}
100 <Grid.Item as={ErrorText}>
101 {error[FORM_ERROR] || error[WARNING]}
108export default InviteUrl;
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list