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

85 lines
2.6 KiB
React
Raw Normal View History

import React from 'react';
import { BusyMessage } from 'component/common';
import Link from 'component/link';
import UserEmailNew from 'component/userEmailNew';
import UserEmailVerify from 'component/userEmailVerify';
import UserVerify from 'component/userVerify';
2017-07-19 01:00:13 +02:00
export class AuthPage extends React.PureComponent {
componentWillMount() {
this.navigateIfAuthenticated(this.props);
}
componentWillReceiveProps(nextProps) {
this.navigateIfAuthenticated(nextProps);
}
navigateIfAuthenticated(props) {
const { isPending, user } = props;
if (
!isPending &&
user &&
user.has_verified_email &&
(user.is_reward_approved || user.is_identity_verified)
2017-07-19 01:00:13 +02:00
) {
2017-07-19 17:09:40 +02:00
props.navigate(props.pathAfterAuth);
2017-07-19 01:00:13 +02:00
}
}
getTitle() {
const { email, isPending, isVerificationCandidate, user } = this.props;
if (isPending || (user && !user.has_verified_email && !email)) {
return __('Human Proofing');
2017-07-19 01:00:13 +02:00
} else if (user && !user.has_verified_email) {
return __('Confirm Email');
} else if (user && !user.is_identity_verified && !user.is_reward_approved) {
return __('Final Verification');
2017-07-19 01:00:13 +02:00
}
return __('Welcome to LBRY');
2017-07-19 01:00:13 +02:00
}
renderMain() {
const { email, isPending, isVerificationCandidate, user } = this.props;
if (isPending) {
return [<BusyMessage 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
}
return [<span className="empty">{__('No further steps.')}</span>, true];
2017-07-19 01:00:13 +02:00
}
render() {
2017-07-29 18:58:31 +02:00
const { email, user, isPending, navigate } = this.props;
2017-08-26 05:21:26 +02:00
const [innerContent, useTemplate] = this.renderMain();
2017-07-19 01:00:13 +02:00
2017-11-24 15:31:05 +01:00
return useTemplate ? (
<main>
<section className="card card--form">
<div className="card__title-primary">
<h1>{this.getTitle()}</h1>
</div>
<div className="card__content">{innerContent}</div>
<div className="card__content">
<div className="help">
{`${__(
2018-03-08 05:21:33 +01:00
'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.'
)} `}
<Link onClick={() => navigate('/discover')} label={__('Return home')} />.
2017-08-26 05:21:26 +02:00
</div>
2017-11-24 15:31:05 +01:00
</div>
</section>
</main>
) : (
innerContent
);
2017-07-19 01:00:13 +02:00
}
}
export default AuthPage;