diff --git a/src/renderer/redux/actions/content.js b/src/renderer/redux/actions/content.js index 0826e4878..0b55483f5 100644 --- a/src/renderer/redux/actions/content.js +++ b/src/renderer/redux/actions/content.js @@ -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(); } }); };