lbry-desktop/js/component/splash.js
Job Evers-Meltzer 2aa10261d9 Improve startup checking
Before this fix, if the daemon wasn't accepting connections
the UI would get an error and then be stuck on the loading screen.

We now check if the daemon is accepting connections first, and then
check for the status.
2017-01-18 09:30:46 -06:00

54 lines
1.4 KiB
JavaScript

import React from 'react';
import lbry from '../lbry.js';
import LoadScreen from './load_screen.js';
var SplashScreen = React.createClass({
propTypes: {
message: React.PropTypes.string,
onLoadDone: React.PropTypes.func,
},
getInitialState: function() {
return {
details: 'Starting daemon',
isLagging: false,
}
},
updateStatus: function(was_lagging=false) {
lbry.getDaemonStatus(this._updateStatusCallback);
},
_updateStatusCallback: function(status) {
if (status.code == 'started') {
// 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({
details: 'Waiting for name resolution',
isLagging: false
});
lbry.resolveName('one', () => {
this.props.onLoadDone();
});
return;
}
this.setState({
details: status.message + (status.is_lagging ? '' : '...'),
isLagging: status.is_lagging,
});
setTimeout(() => {
this.updateStatus(status.is_lagging);
}, 500);
},
componentDidMount: function() {
lbry.connect((connected) => {
this.updateStatus();
});
},
render: function() {
return <LoadScreen message={this.props.message} details={this.state.details} isWarning={this.state.isLagging} />;
}
});
export default SplashScreen;