lbry-desktop/src/ui/page/auth/view.jsx

88 lines
2.5 KiB
React
Raw Normal View History

2018-03-30 02:43:47 +02:00
// @flow
import React from 'react';
2018-03-26 23:32:43 +02:00
import BusyIndicator from 'component/common/busy-indicator';
import Button from 'component/button';
import UserEmailNew from 'component/userEmailNew';
import UserEmailVerify from 'component/userEmailVerify';
import UserVerify from 'component/userVerify';
2018-03-26 23:32:43 +02:00
import Page from 'component/page';
2017-07-19 01:00:13 +02:00
2018-03-30 02:43:47 +02:00
type Props = {
isPending: boolean,
email: string,
2019-03-18 06:09:50 +01:00
pathAfterAuth: string,
2019-03-29 15:23:32 +01:00
location: UrlLocation,
2019-04-04 23:05:23 +02:00
history: { push: string => void },
2018-03-30 02:43:47 +02:00
user: ?{
has_verified_email: boolean,
is_reward_approved: boolean,
is_identity_verified: boolean,
},
};
2018-09-24 05:44:42 +02:00
class AuthPage extends React.PureComponent<Props> {
2017-07-19 01:00:13 +02:00
componentWillMount() {
this.navigateIfAuthenticated(this.props);
}
2018-03-30 02:43:47 +02:00
componentWillReceiveProps(nextProps: Props) {
2017-07-19 01:00:13 +02:00
this.navigateIfAuthenticated(nextProps);
}
2018-03-30 02:43:47 +02:00
navigateIfAuthenticated = (props: Props) => {
2019-04-04 23:05:23 +02:00
const { isPending, user, location, history } = props;
2018-03-30 02:43:47 +02:00
if (
!isPending &&
user &&
user.has_verified_email &&
(user.is_reward_approved || user.is_identity_verified)
) {
2019-03-29 15:23:32 +01:00
const { search } = location;
const urlParams = new URLSearchParams(search);
const redirectTo = urlParams.get('redirect');
const path = redirectTo ? `/$/${redirectTo}` : '/';
2019-04-04 23:05:23 +02:00
history.push(path);
2018-03-30 02:43:47 +02:00
}
};
2017-07-19 01:00:13 +02:00
renderMain() {
2018-03-30 02:43:47 +02:00
const { email, isPending, user } = this.props;
2017-07-19 01:00:13 +02:00
if (isPending) {
2018-03-26 23:32:43 +02:00
return [<BusyIndicator message={__('Authenticating')} />, true];
2017-07-19 01:00:13 +02:00
} else if (user && !user.has_verified_email && !email) {
2017-08-26 05:21:26 +02:00
return [<UserEmailNew />, true];
2017-07-19 01:00:13 +02:00
} else if (user && !user.has_verified_email) {
2017-08-26 05:21:26 +02:00
return [<UserEmailVerify />, true];
2017-07-19 01:00:13 +02:00
} else if (user && !user.is_identity_verified) {
2017-08-26 05:21:26 +02:00
return [<UserVerify />, false];
2017-07-19 01:00:13 +02:00
}
2019-03-25 07:18:22 +01:00
return [<span className="empty">{__('No further steps.')}</span>, true];
2017-07-19 01:00:13 +02:00
}
render() {
2017-08-26 05:21:26 +02:00
const [innerContent, useTemplate] = this.renderMain();
2017-07-19 01:00:13 +02:00
2018-03-26 23:32:43 +02:00
return (
<Page>
{useTemplate ? (
2019-03-25 07:18:22 +01:00
<section className="card card--section">
{innerContent}
2019-03-25 07:18:22 +01:00
<p className="help">
{`${__(
'This information is disclosed only to LBRY, Inc. and not to the LBRY network. It is only required to earn LBRY rewards and may be used to sync usage data across devices.'
)} `}
2019-03-28 17:53:13 +01:00
<Button button="link" navigate="/" label={__('Return home.')} />
</p>
2018-03-26 23:32:43 +02:00
</section>
) : (
innerContent
)}
</Page>
2017-11-24 15:31:05 +01:00
);
2017-07-19 01:00:13 +02:00
}
}
export default AuthPage;