Fix issue file_list call continues indefinitely if a file is removed while downloading

This commit is contained in:
Chakrit Likitkhajorn 2018-10-15 18:27:56 +07:00
parent 9db8a571dd
commit 208bafdae9

View file

@ -3,10 +3,7 @@ import * as NOTIFICATION_TYPES from 'constants/notification_types';
import { ipcRenderer } from 'electron';
import { doAlertError } from 'redux/actions/app';
import { doNavigate } from 'redux/actions/navigation';
import {
setSubscriptionLatest,
setSubscriptionNotification,
} from 'redux/actions/subscriptions';
import { setSubscriptionLatest, setSubscriptionNotification } from 'redux/actions/subscriptions';
import { selectNotifications } from 'redux/selectors/subscriptions';
import { selectBadgeNumber } from 'redux/selectors/app';
import {
@ -18,6 +15,7 @@ import {
doFetchClaimListMine,
makeSelectCostInfoForUri,
makeSelectFileInfoForUri,
selectFileInfosByOutpoint,
selectDownloadingByOutpoint,
selectTotalDownloadProgress,
selectBalance,
@ -31,17 +29,22 @@ import analytics from 'analytics';
const DOWNLOAD_POLL_INTERVAL = 250;
export function doUpdateLoadStatus(uri, outpoint) {
export function doUpdateLoadStatus(uri: string, outpoint: string) {
return (dispatch, getState) => {
const setNextStatusUpdate = () =>
setTimeout(() => {
const byOutpoint = selectFileInfosByOutpoint(getState());
if (byOutpoint[outpoint]) {
dispatch(doUpdateLoadStatus(uri, outpoint));
}
}, DOWNLOAD_POLL_INTERVAL);
Lbry.file_list({
outpoint,
full_status: true,
}).then(([fileInfo]) => {
if (!fileInfo || fileInfo.written_bytes === 0) {
// download hasn't started yet
setTimeout(() => {
dispatch(doUpdateLoadStatus(uri, outpoint));
}, DOWNLOAD_POLL_INTERVAL);
setNextStatusUpdate();
} else if (fileInfo.completed) {
const state = getState();
// TODO this isn't going to get called if they reload the client before
@ -124,10 +127,7 @@ export function doUpdateLoadStatus(uri, outpoint) {
const totalProgress = selectTotalDownloadProgress(getState());
setProgressBar(totalProgress);
setTimeout(() => {
dispatch(doUpdateLoadStatus(uri, outpoint));
}, DOWNLOAD_POLL_INTERVAL);
setNextStatusUpdate();
}
});
};