diff --git a/js/page/my_files.js b/js/page/my_files.js index 45798766e..66f7dd20c 100644 --- a/js/page/my_files.js +++ b/js/page/my_files.js @@ -110,6 +110,7 @@ var MyFilesRow = React.createClass({ {this.props.completed ? 'Download complete' : (parseInt(this.props.ratioLoaded * 100) + '%')}
{ pauseLink }
{ watchButton }
+ {this.props.available ? null :

This file is now uploading to Reflector. This service hosts a copy of the file on LBRY's servers so that it's available even if no one with the file is online.

} ) } @@ -131,10 +132,13 @@ var MyFilesRow = React.createClass({ }); var MyFilesPage = React.createClass({ - fileTimeout: null, + _fileTimeout: null, + _fileInfoCheckNum: 0, + getInitialState: function() { return { filesInfo: null, + filesAvailable: {}, }; }, componentDidMount: function() { @@ -144,17 +148,51 @@ var MyFilesPage = React.createClass({ this.updateFilesInfo(); }, componentWillUnmount: function() { - if (this.fileTimeout) + if (this._fileTimeout) { - clearTimeout(this.fileTimeout); + clearTimeout(this._fileTimeout); } }, updateFilesInfo: function() { lbry.getFilesInfo((filesInfo) => { + if (!filesInfo) { + filesInfo = []; + } + + if (!(this._fileInfoCheckNum % 5)) { + // Time to update file availability status + + for (let fileInfo of filesInfo) { + let name = fileInfo.lbry_uri; + + lbry.search(name, (results) => { + var result = results[0]; + + if (result.name != name) { + // File not listed in Lighthouse + var available = false; + } else { + var available = result.available; + } + + if (typeof this.state.filesAvailable[name] === 'undefined' || available != this.state.filesAvailable[name]) { + var newFilesAvailable = Object.assign({}, this.state.filesAvailable); + newFilesAvailable[name] = available; + this.setState({ + filesAvailable: newFilesAvailable, + }); + } + }); + } + } + + this._fileInfoCheckNum += 1; + this.setState({ - filesInfo: (filesInfo ? filesInfo : []), + filesInfo: filesInfo, }); - this.fileTimeout = setTimeout(() => { this.updateFilesInfo() }, 1000); + + this._fileTimeout = setTimeout(() => { this.updateFilesInfo() }, 1000); }); }, render: function() { @@ -201,7 +239,8 @@ var MyFilesPage = React.createClass({ content.push(); + showWatchButton={showWatchButton} pending={pending} + available={this.state.filesAvailable[lbry_uri]} />); } } return (