Merge pull request #105 from lbryio/my-files-no-lighthouse

My Files page: during publication, check for availability directly from peers instead of with Lighthouse
This commit is contained in:
alexliebowitz 2016-12-13 13:15:33 -05:00 committed by GitHub
commit a98c410403
2 changed files with 15 additions and 17 deletions

View file

@ -183,6 +183,10 @@ lbry.getCostEstimate = function(name, callback) {
lbry.call('get_est_cost', { name: name }, callback); lbry.call('get_est_cost', { name: name }, callback);
} }
lbry.getPeersForBlobHash = function(blobHash, callback) {
lbry.call('get_peers_for_hash', { blob_hash: blobHash }, callback)
}
lbry.getFileStatus = function(name, callback) { lbry.getFileStatus = function(name, callback) {
lbry.call('get_lbry_file', { 'name': name }, callback); lbry.call('get_lbry_file', { 'name': name }, callback);
} }

View file

@ -166,6 +166,7 @@ var MyFilesRow = React.createClass({
var MyFilesPage = React.createClass({ var MyFilesPage = React.createClass({
_fileTimeout: null, _fileTimeout: null,
_fileInfoCheckRate: 300,
_fileInfoCheckNum: 0, _fileInfoCheckNum: 0,
_filesOwnership: {}, _filesOwnership: {},
@ -232,24 +233,17 @@ var MyFilesPage = React.createClass({
filesInfo = []; filesInfo = [];
} }
if (!(this._fileInfoCheckNum % 5)) { let newFilesAvailable;
if (!(this._fileInfoCheckNum % this._fileInfoCheckRate)) {
// Time to update file availability status // Time to update file availability status
newFilesAvailable = {};
let filePeersCheckCount = 0;
for (let fileInfo of filesInfo) { for (let fileInfo of filesInfo) {
let name = fileInfo.lbry_uri; lbry.getPeersForBlobHash(fileInfo.sd_hash, (peers) => {
filePeersCheckCount++;
if (name === null) { newFilesAvailable[fileInfo.sd_hash] = peers.length >= 0;
continue; if (filePeersCheckCount >= filesInfo.length) {
}
lighthouse.search(name, (results) => {
var result = results[0];
var available = result.name == name && 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({ this.setState({
filesAvailable: newFilesAvailable, filesAvailable: newFilesAvailable,
}); });
@ -284,7 +278,7 @@ var MyFilesPage = React.createClass({
for (let fileInfo of this.state.filesInfo) { for (let fileInfo of this.state.filesInfo) {
let {completed, written_bytes, total_bytes, lbry_uri, file_name, download_path, let {completed, written_bytes, total_bytes, lbry_uri, file_name, download_path,
stopped, metadata} = fileInfo; stopped, metadata, sd_hash} = fileInfo;
var isMine = this._filesOwnership[lbry_uri]; var isMine = this._filesOwnership[lbry_uri];
@ -314,7 +308,7 @@ var MyFilesPage = React.createClass({
content.push(<MyFilesRow key={lbry_uri} lbryUri={lbry_uri} title={title || ('lbry://' + lbry_uri)} completed={completed} stopped={stopped} content.push(<MyFilesRow key={lbry_uri} lbryUri={lbry_uri} title={title || ('lbry://' + lbry_uri)} completed={completed} stopped={stopped}
ratioLoaded={ratioLoaded} imgUrl={thumbnail} path={download_path} ratioLoaded={ratioLoaded} imgUrl={thumbnail} path={download_path}
showWatchButton={showWatchButton} pending={pending} showWatchButton={showWatchButton} pending={pending}
available={this.state.filesAvailable[lbry_uri]} isMine={isMine} />); available={this.state.filesAvailable[sd_hash]} isMine={isMine} />);
} }
} }
return ( return (