Fixed error handling on downloads.

This commit is contained in:
Roger Far 2021-06-09 18:58:49 -06:00
parent fa9c839be0
commit 34422d7167

View file

@ -47,7 +47,7 @@ namespace RdtClient.Service.Services
torrents = torrents.Where(m => m.Completed == null).ToList(); torrents = torrents.Where(m => m.Completed == null).ToList();
var downloads = torrents.SelectMany(m => m.Downloads) var downloads = torrents.SelectMany(m => m.Downloads)
.Where(m => m.DownloadQueued != null && m.DownloadStarted != null && m.DownloadFinished == null) .Where(m => m.DownloadQueued != null && m.DownloadStarted != null && m.DownloadFinished == null && m.Error == null)
.OrderBy(m => m.DownloadQueued); .OrderBy(m => m.DownloadQueued);
foreach (var download in downloads) foreach (var download in downloads)
@ -56,7 +56,7 @@ namespace RdtClient.Service.Services
} }
var unpacks = torrents.SelectMany(m => m.Downloads) var unpacks = torrents.SelectMany(m => m.Downloads)
.Where(m => m.UnpackingQueued != null && m.UnpackingStarted != null && m.UnpackingFinished == null) .Where(m => m.UnpackingQueued != null && m.UnpackingStarted != null && m.UnpackingFinished == null && m.Error == null)
.OrderBy(m => m.DownloadQueued); .OrderBy(m => m.DownloadQueued);
foreach (var download in unpacks) foreach (var download in unpacks)
@ -211,7 +211,7 @@ namespace RdtClient.Service.Services
// Check if there are any downloads that are queued and can be started. // Check if there are any downloads that are queued and can be started.
var queuedDownloads = torrents.SelectMany(m => m.Downloads) var queuedDownloads = torrents.SelectMany(m => m.Downloads)
.Where(m => m.Completed == null && m.DownloadQueued != null && m.DownloadStarted == null) .Where(m => m.Completed == null && m.DownloadQueued != null && m.DownloadStarted == null && m.Error == null)
.OrderBy(m => m.DownloadQueued) .OrderBy(m => m.DownloadQueued)
.ToList(); .ToList();
@ -245,6 +245,9 @@ namespace RdtClient.Service.Services
catch (Exception ex) catch (Exception ex)
{ {
await _downloads.UpdateError(download.DownloadId, ex.Message); await _downloads.UpdateError(download.DownloadId, ex.Message);
await _downloads.UpdateCompleted(download.DownloadId, DateTimeOffset.UtcNow);
download.Error = ex.Message;
download.Completed = DateTimeOffset.UtcNow;
continue; continue;
} }
@ -275,7 +278,7 @@ namespace RdtClient.Service.Services
// Check if there are any unpacks that are queued and can be started. // Check if there are any unpacks that are queued and can be started.
var queuedUnpacks = torrents.SelectMany(m => m.Downloads) var queuedUnpacks = torrents.SelectMany(m => m.Downloads)
.Where(m => m.Completed == null && m.UnpackingQueued != null && m.UnpackingStarted == null) .Where(m => m.Completed == null && m.UnpackingQueued != null && m.UnpackingStarted == null && m.Error == null)
.OrderBy(m => m.DownloadQueued) .OrderBy(m => m.DownloadQueued)
.ToList(); .ToList();
@ -423,7 +426,8 @@ namespace RdtClient.Service.Services
var downloadsPending = torrent.Downloads var downloadsPending = torrent.Downloads
.Where(m => m.Completed == null && .Where(m => m.Completed == null &&
m.DownloadStarted == null && m.DownloadStarted == null &&
m.DownloadFinished == null) m.DownloadFinished == null &&
m.Error == null)
.OrderBy(m => m.Added) .OrderBy(m => m.Added)
.ToList(); .ToList();