2018-03-30 02:43:47 +02:00
// @flow
2017-12-21 22:08:54 +01:00
import React from 'react' ;
2018-03-26 23:32:43 +02:00
import BusyIndicator from 'component/common/busy-indicator' ;
import Button from 'component/button' ;
2017-12-21 22:08:54 +01:00
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 ,
// Not sure why it isn't recognizing that we are using this prop type
// Something to do with how we are passing all the props through probably
pathAfterAuth : string , // eslint-disable-line react/no-unused-prop-types
user : ? {
has _verified _email : boolean ,
is _reward _approved : boolean ,
is _identity _verified : boolean ,
} ,
navigate : ( string , ? { } ) => void ,
} ;
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 ) ;
}
getTitle ( ) {
2018-03-30 02:43:47 +02:00
const { email , isPending , user } = this . props ;
2017-07-19 01:00:13 +02:00
if ( isPending || ( user && ! user . has _verified _email && ! email ) ) {
2017-12-21 22:08:54 +01:00
return _ _ ( 'Human Proofing' ) ;
2017-07-19 01:00:13 +02:00
} else if ( user && ! user . has _verified _email ) {
2019-01-08 03:46:33 +01:00
return _ _ ( 'Awaiting Confirmation' ) ;
2017-07-25 20:34:28 +02:00
} else if ( user && ! user . is _identity _verified && ! user . is _reward _approved ) {
2017-12-21 22:08:54 +01:00
return _ _ ( 'Final Verification' ) ;
2017-07-19 01:00:13 +02:00
}
2017-12-21 22:08:54 +01:00
return _ _ ( 'Welcome to LBRY' ) ;
2017-07-19 01:00:13 +02:00
}
2018-03-30 02:43:47 +02:00
navigateIfAuthenticated = ( props : Props ) => {
const { isPending , user , pathAfterAuth , navigate } = props ;
if (
! isPending &&
user &&
user . has _verified _email &&
( user . is _reward _approved || user . is _identity _verified )
) {
navigate ( pathAfterAuth ) ;
}
} ;
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
}
2017-12-21 22:08:54 +01:00
return [ < span className = "empty" > { _ _ ( 'No further steps.' ) } < / span > , true ] ;
2017-07-19 01:00:13 +02:00
}
render ( ) {
2018-03-30 02:43:47 +02:00
const { navigate } = this . props ;
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 ? (
< section className = "card card--section" >
2018-12-19 06:44:53 +01:00
< header className = "card__header card__header--flat" >
< h2 className = "card__title" > { this . getTitle ( ) } < / h2 >
< / header >
2018-03-26 23:32:43 +02:00
< div className = "card__content" >
2018-12-19 06:44:53 +01:00
{ innerContent }
< p className = "help" >
2018-03-26 23:32:43 +02: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.'
) } ` }
2018-03-30 02:43:47 +02:00
< Button
button = "link"
onClick = { ( ) => navigate ( '/discover' ) }
label = { _ _ ( 'Return home.' ) }
/ >
2018-12-19 06:44:53 +01:00
< / p >
2018-03-26 23:32:43 +02:00
< / div >
< / section >
) : (
innerContent
) }
< / Page >
2017-11-24 15:31:05 +01:00
) ;
2017-07-19 01:00:13 +02:00
}
}
export default AuthPage ;