Fix download tracking components getting stuck on import failures

This commit is contained in:
Dean Herbert 2019-10-28 17:41:42 +09:00
parent 50a1f06ad9
commit cf3ed42bfc
2 changed files with 9 additions and 2 deletions

View File

@ -108,7 +108,7 @@ public Task Import(params string[] paths)
return Import(notification, paths);
}
protected async Task Import(ProgressNotification notification, params string[] paths)
protected async Task<IEnumerable<TModel>> Import(ProgressNotification notification, params string[] paths)
{
notification.Progress = 0;
notification.Text = $"{HumanisedModelName.Humanize(LetterCasing.Title)} import is initialising...";
@ -168,6 +168,8 @@ await Task.WhenAll(paths.Select(async path =>
notification.State = ProgressNotificationState.Completed;
}
return imported;
}
/// <summary>

View File

@ -76,7 +76,12 @@ public bool Download(TModel model, bool minimiseDownloadSize = false)
Task.Factory.StartNew(async () =>
{
// This gets scheduled back to the update thread, but we want the import to run in the background.
await Import(notification, filename);
var imported = await Import(notification, filename);
// for now a failed import will be marked as a failed download for simplicity.
if (!imported.Any())
DownloadFailed?.Invoke(request);
currentDownloads.Remove(request);
}, TaskCreationOptions.LongRunning);
};