2016-11-22 21:19:08 +01:00
import React from 'react' ;
import lbry from '../lbry.js' ;
import LoadScreen from './load_screen.js' ;
2017-05-17 10:10:25 +02:00
export class SplashScreen extends React . Component {
static propTypes = {
2016-04-10 02:00:56 +02:00
message : React . PropTypes . string ,
2016-04-14 07:49:00 +02:00
onLoadDone : React . PropTypes . func ,
2017-05-17 10:10:25 +02:00
}
constructor ( props ) {
super ( props ) ;
this . state = {
2016-04-15 12:41:01 +02:00
details : 'Starting daemon' ,
2017-05-31 01:56:48 +02:00
message : "Connecting" ,
2016-04-15 12:41:01 +02:00
isLagging : false ,
2017-05-17 10:10:25 +02:00
} ;
}
updateStatus ( ) {
2017-05-18 03:37:39 +02:00
lbry . status ( ) . then ( ( status ) => { this . _updateStatusCallback ( status ) } ) ;
2017-05-17 10:10:25 +02:00
}
_updateStatusCallback ( status ) {
2017-04-09 17:06:23 +02:00
const startupStatus = status . startup _status
if ( startupStatus . code == 'started' ) {
2017-01-18 16:29:47 +01:00
// Wait until we are able to resolve a name before declaring
// that we are done.
// TODO: This is a hack, and the logic should live in the daemon
// to give us a better sense of when we are actually started
this . setState ( {
2017-05-31 01:56:48 +02:00
message : "Testing Network" ,
details : "Waiting for name resolution" ,
2017-01-18 16:29:47 +01:00
isLagging : false
} ) ;
2016-04-14 08:27:06 +02:00
2017-05-31 01:56:48 +02:00
lbry . resolve ( { uri : "lbry://one" } ) . then ( ( ) => {
2017-01-18 16:29:47 +01:00
this . props . onLoadDone ( ) ;
2016-04-14 08:27:06 +02:00
} ) ;
2017-01-18 16:29:47 +01:00
return ;
}
this . setState ( {
2017-04-09 17:06:23 +02:00
details : startupStatus . message + ( startupStatus . is _lagging ? '' : '...' ) ,
isLagging : startupStatus . is _lagging ,
2017-01-18 16:29:47 +01:00
} ) ;
setTimeout ( ( ) => {
2017-04-09 17:06:23 +02:00
this . updateStatus ( ) ;
2017-01-18 16:29:47 +01:00
} , 500 ) ;
2017-05-17 10:10:25 +02:00
}
componentDidMount ( ) {
2017-05-31 01:56:48 +02:00
lbry . connect ( )
. then ( ( ) => { this . updateStatus ( ) } )
. catch ( ( ) => {
2017-04-09 17:06:23 +02:00
this . setState ( {
isLagging : true ,
2017-05-31 01:56:48 +02:00
message : "Connection Failure" ,
details : "Try closing all LBRY processes and starting again. If this still happpens, your anti-virus software or firewall may be preventing LBRY from connecting. Contact hello@lbry.io if you think this is a software bug."
2017-04-09 17:06:23 +02:00
} )
2017-05-31 01:56:48 +02:00
} )
2017-05-17 10:10:25 +02:00
}
render ( ) {
2017-05-31 01:56:48 +02:00
return < LoadScreen message = { this . state . message } details = { this . state . details } isWarning = { this . state . isLagging } / >
2016-04-10 02:00:56 +02:00
}
2017-05-17 10:10:25 +02:00
}
2016-11-22 21:19:08 +01:00
export default SplashScreen ;