lbry-desktop/ui/component/inviteNew/view.jsx

89 lines
2.4 KiB
React
Raw Normal View History

// @flow
2020-01-14 21:01:37 +01:00
import React from 'react';
2018-04-10 22:58:34 +02:00
import Button from 'component/button';
2019-06-17 22:32:38 +02:00
import { Form, FormField } from 'component/common/form';
2019-02-20 17:18:59 +01:00
import CopyableText from 'component/copyableText';
2019-09-26 18:07:11 +02:00
import Card from 'component/common/card';
2020-01-03 16:06:26 +01:00
import I18nMessage from 'component/i18nMessage';
2017-08-18 05:31:44 +02:00
2020-01-14 21:01:37 +01:00
type FormState = {
email: string,
};
2019-11-22 22:13:00 +01:00
type Props = {
errorMessage: ?string,
inviteNew: string => void,
isPending: boolean,
referralLink: string,
};
2020-01-14 21:01:37 +01:00
class InviteNew extends React.PureComponent<Props, FormState> {
constructor() {
super();
2020-01-14 21:01:37 +01:00
this.state = {
email: '',
};
2020-01-14 21:01:37 +01:00
(this: any).handleSubmit = this.handleSubmit.bind(this);
}
2020-01-14 21:01:37 +01:00
handleEmailChanged(event: any) {
this.setState({
email: event.target.value,
2020-01-14 15:57:34 +01:00
});
2017-08-18 05:31:44 +02:00
}
2020-01-14 21:01:37 +01:00
handleSubmit() {
const { email } = this.state;
this.props.inviteNew(email);
}
2020-01-14 18:42:30 +01:00
2020-01-14 21:01:37 +01:00
render() {
const { errorMessage, isPending, referralLink } = this.props;
2020-01-14 17:44:40 +01:00
2020-01-14 21:01:37 +01:00
return (
2020-01-14 15:57:34 +01:00
<Card
2020-01-14 21:01:37 +01:00
title={__('Invite a Friend')}
subtitle={__('When your friends start using LBRY, the network gets stronger!')}
2020-01-14 15:57:34 +01:00
actions={
<React.Fragment>
2020-01-14 21:01:37 +01:00
<Form onSubmit={this.handleSubmit}>
2020-01-14 17:44:40 +01:00
<FormField
type="text"
label="Email"
placeholder="youremail@example.org"
name="email"
2020-01-14 21:01:37 +01:00
value={this.state.email}
2020-01-14 17:44:40 +01:00
error={errorMessage}
2020-01-14 21:01:37 +01:00
inputButton={
<Button button="secondary" type="submit" label="Invite" disabled={isPending || !this.state.email} />
}
2020-01-14 17:44:40 +01:00
onChange={event => {
2020-01-14 21:01:37 +01:00
this.handleEmailChanged(event);
2020-01-14 17:44:40 +01:00
}}
2020-01-14 15:57:34 +01:00
/>
2020-01-14 21:01:37 +01:00
<CopyableText label={__('Or share this link with your friends')} copyable={referralLink} />
2020-01-14 15:57:34 +01:00
<p className="help">
<I18nMessage
tokens={{
rewards_link: <Button button="link" navigate="/$/rewards" label={__('rewards')} />,
referral_faq_link: <Button button="link" label={__('FAQ')} href="https://lbry.com/faq/referrals" />,
}}
>
2020-01-14 21:01:37 +01:00
Earn %rewards_link% for inviting your friends. Read our %referral_faq_link% to learn more about
referrals.
2020-01-14 15:57:34 +01:00
</I18nMessage>
</p>
</Form>
</React.Fragment>
}
/>
2020-01-14 21:01:37 +01:00
);
}
2017-08-18 05:31:44 +02:00
}
export default InviteNew;