New: Add download client name to pending items waiting for a specific client

(cherry picked from commit 3cd4c67ba12cd5e8cc00d3df8929555fc0ad5918)

Closes #9676
This commit is contained in:
Mark McDowall 2024-01-21 10:25:28 -08:00 committed by Bogdan
parent 25b77eb4a2
commit 0ecb1d0706
1 changed files with 31 additions and 7 deletions

View File

@ -44,8 +44,10 @@ namespace NzbDrone.Core.Download.Pending
private readonly IDelayProfileService _delayProfileService; private readonly IDelayProfileService _delayProfileService;
private readonly ITaskManager _taskManager; private readonly ITaskManager _taskManager;
private readonly IConfigService _configService; private readonly IConfigService _configService;
private readonly IRemoteMovieAggregationService _aggregationService;
private readonly ICustomFormatCalculationService _formatCalculator; private readonly ICustomFormatCalculationService _formatCalculator;
private readonly IRemoteMovieAggregationService _aggregationService;
private readonly IDownloadClientFactory _downloadClientFactory;
private readonly IIndexerFactory _indexerFactory;
private readonly IEventAggregator _eventAggregator; private readonly IEventAggregator _eventAggregator;
private readonly Logger _logger; private readonly Logger _logger;
@ -56,8 +58,10 @@ namespace NzbDrone.Core.Download.Pending
IDelayProfileService delayProfileService, IDelayProfileService delayProfileService,
ITaskManager taskManager, ITaskManager taskManager,
IConfigService configService, IConfigService configService,
IRemoteMovieAggregationService aggregationService,
ICustomFormatCalculationService formatCalculator, ICustomFormatCalculationService formatCalculator,
IRemoteMovieAggregationService aggregationService,
IDownloadClientFactory downloadClientFactory,
IIndexerFactory indexerFactory,
IEventAggregator eventAggregator, IEventAggregator eventAggregator,
Logger logger) Logger logger)
{ {
@ -68,8 +72,10 @@ namespace NzbDrone.Core.Download.Pending
_delayProfileService = delayProfileService; _delayProfileService = delayProfileService;
_taskManager = taskManager; _taskManager = taskManager;
_configService = configService; _configService = configService;
_aggregationService = aggregationService;
_formatCalculator = formatCalculator; _formatCalculator = formatCalculator;
_aggregationService = aggregationService;
_downloadClientFactory = downloadClientFactory;
_indexerFactory = indexerFactory;
_eventAggregator = eventAggregator; _eventAggregator = eventAggregator;
_logger = logger; _logger = logger;
} }
@ -101,9 +107,16 @@ namespace NzbDrone.Core.Download.Pending
if (matchingReport.Reason != reason) if (matchingReport.Reason != reason)
{ {
_logger.Debug("The release {0} is already pending with reason {1}, changing to {2}", decision.RemoteMovie, matchingReport.Reason, reason); if (matchingReport.Reason == PendingReleaseReason.DownloadClientUnavailable)
matchingReport.Reason = reason; {
_repository.Update(matchingReport); _logger.Debug("The release {0} is already pending with reason {1}, not changing reason", decision.RemoteMovie, matchingReport.Reason);
}
else
{
_logger.Debug("The release {0} is already pending with reason {1}, changing to {2}", decision.RemoteMovie, matchingReport.Reason, reason);
matchingReport.Reason = reason;
_repository.Update(matchingReport);
}
} }
else else
{ {
@ -191,6 +204,16 @@ namespace NzbDrone.Core.Download.Pending
timeleft = TimeSpan.Zero; timeleft = TimeSpan.Zero;
} }
string downloadClientName = null;
var indexer = _indexerFactory.Find(pendingRelease.Release.IndexerId);
if (indexer is { DownloadClientId: > 0 })
{
var downloadClient = _downloadClientFactory.Find(indexer.DownloadClientId);
downloadClientName = downloadClient?.Name;
}
var queue = new Queue.Queue var queue = new Queue.Queue
{ {
Id = GetQueueId(pendingRelease, pendingRelease.RemoteMovie.Movie), Id = GetQueueId(pendingRelease, pendingRelease.RemoteMovie.Movie),
@ -206,7 +229,8 @@ namespace NzbDrone.Core.Download.Pending
Added = pendingRelease.Added, Added = pendingRelease.Added,
Status = pendingRelease.Reason.ToString(), Status = pendingRelease.Reason.ToString(),
Protocol = pendingRelease.RemoteMovie.Release.DownloadProtocol, Protocol = pendingRelease.RemoteMovie.Release.DownloadProtocol,
Indexer = pendingRelease.RemoteMovie.Release.Indexer Indexer = pendingRelease.RemoteMovie.Release.Indexer,
DownloadClient = downloadClientName
}; };
queued.Add(queue); queued.Add(queue);