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

Merged
chrisza4 merged 3 commits from file_list-call into master 2018-10-18 17:23:36 +02:00
2 changed files with 16 additions and 13 deletions

View file

@ -19,7 +19,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
* Credit card verification messaging ([#2025](https://github.com/lbryio/lbry-desktop/pull/2025)) * Credit card verification messaging ([#2025](https://github.com/lbryio/lbry-desktop/pull/2025))
* Reverse Order & Use System/Location Time/Date ([#2036]https://github.com/lbryio/lbry-desktop/pull/2036) * Reverse Order & Use System/Location Time/Date ([#2036]https://github.com/lbryio/lbry-desktop/pull/2036)
* Limit file type can be uploaded as thumbnail for publishing ([#2034](https://github.com/lbryio/lbry-desktop/pull/2034)) * Limit file type can be uploaded as thumbnail for publishing ([#2034](https://github.com/lbryio/lbry-desktop/pull/2034))
* Change snackbar notification postion to bottom-left ([#2040](https://github.com/lbryio/lbry-desktop/pull/2040)) * Change snackbar notification postion to bottom-left ([#2040](https://github.com/lbryio/lbry-desktop/pull/2040))
### Fixed ### Fixed
@ -28,6 +28,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
* History styling on large screens and link issue with claims ([#1999](https://github.com/lbryio/lbry-desktop/pull/1999)) * History styling on large screens and link issue with claims ([#1999](https://github.com/lbryio/lbry-desktop/pull/1999))
* Satisfy console warnings in publishForm and validation messaging ([#2010](https://github.com/lbryio/lbry-desktop/pull/2010)) * Satisfy console warnings in publishForm and validation messaging ([#2010](https://github.com/lbryio/lbry-desktop/pull/2010))
* App crashing if invalid characters entered in LBRY URL ([#2026])(https://github.com/lbryio/lbry-desktop/pull/2026)) * App crashing if invalid characters entered in LBRY URL ([#2026])(https://github.com/lbryio/lbry-desktop/pull/2026))
* Fix issue file_list call continues indefinitely if a file is removed while downloading ([#2042])(https://github.com/lbryio/lbry-desktop/pull/2042))
## [0.25.1] - 2018-09-18 ## [0.25.1] - 2018-09-18

View file

@ -3,10 +3,7 @@ import * as NOTIFICATION_TYPES from 'constants/notification_types';
import { ipcRenderer } from 'electron'; import { ipcRenderer } from 'electron';
import { doAlertError } from 'redux/actions/app'; import { doAlertError } from 'redux/actions/app';
import { doNavigate } from 'redux/actions/navigation'; import { doNavigate } from 'redux/actions/navigation';
import { import { setSubscriptionLatest, setSubscriptionNotification } from 'redux/actions/subscriptions';
setSubscriptionLatest,
setSubscriptionNotification,
} from 'redux/actions/subscriptions';
import { selectNotifications } from 'redux/selectors/subscriptions'; import { selectNotifications } from 'redux/selectors/subscriptions';
import { selectBadgeNumber } from 'redux/selectors/app'; import { selectBadgeNumber } from 'redux/selectors/app';
import { import {
@ -18,6 +15,7 @@ import {
doFetchClaimListMine, doFetchClaimListMine,
makeSelectCostInfoForUri, makeSelectCostInfoForUri,
makeSelectFileInfoForUri, makeSelectFileInfoForUri,
selectFileInfosByOutpoint,
selectDownloadingByOutpoint, selectDownloadingByOutpoint,
selectTotalDownloadProgress, selectTotalDownloadProgress,
selectBalance, selectBalance,
@ -31,17 +29,24 @@ import analytics from 'analytics';
const DOWNLOAD_POLL_INTERVAL = 250; const DOWNLOAD_POLL_INTERVAL = 250;
export function doUpdateLoadStatus(uri, outpoint) { export function doUpdateLoadStatus(uri: string, outpoint: string) {
return (dispatch, getState) => { return (dispatch, getState) => {
const setNextStatusUpdate = () =>
setTimeout(() => {
// We need to check if outpoint still exists first because user are able to delete file (outpoint) while downloading.
// If a file is already deleted, no point to still try update load status
const byOutpoint = selectFileInfosByOutpoint(getState());
if (byOutpoint[outpoint]) {
dispatch(doUpdateLoadStatus(uri, outpoint));
}
}, DOWNLOAD_POLL_INTERVAL);
Lbry.file_list({ Lbry.file_list({
outpoint, outpoint,
full_status: true, full_status: true,
}).then(([fileInfo]) => { }).then(([fileInfo]) => {
if (!fileInfo || fileInfo.written_bytes === 0) { if (!fileInfo || fileInfo.written_bytes === 0) {
// download hasn't started yet // download hasn't started yet
setTimeout(() => { setNextStatusUpdate();
dispatch(doUpdateLoadStatus(uri, outpoint));
}, DOWNLOAD_POLL_INTERVAL);
} else if (fileInfo.completed) { } else if (fileInfo.completed) {
const state = getState(); const state = getState();
// TODO this isn't going to get called if they reload the client before // TODO this isn't going to get called if they reload the client before
@ -124,10 +129,7 @@ export function doUpdateLoadStatus(uri, outpoint) {
const totalProgress = selectTotalDownloadProgress(getState()); const totalProgress = selectTotalDownloadProgress(getState());
setProgressBar(totalProgress); setProgressBar(totalProgress);
setNextStatusUpdate();
setTimeout(() => {
dispatch(doUpdateLoadStatus(uri, outpoint));
}, DOWNLOAD_POLL_INTERVAL);
} }
}); });
}; };