Improve message for grab errors due to no matching tags

Co-authored-by: zakary <zak@ary.dev>
(cherry picked from commit df672487cf1d5f067849367a2bfb0068defc315d)

Closes #3814
pull/3723/head^2
Bogdan 3 months ago
parent cb532caca4
commit e0d904fa69

@ -201,16 +201,8 @@ namespace NzbDrone.Core.Test.Download
var clientTags = new HashSet<int> { 1 }; var clientTags = new HashSet<int> { 1 };
WithTorrentClient(0, clientTags); WithTorrentClient(0, clientTags);
WithTorrentClient(0, clientTags);
WithTorrentClient(0, clientTags);
WithTorrentClient(0, clientTags);
var client1 = Subject.GetDownloadClient(DownloadProtocol.Torrent, 0, false, seriesTags);
var client2 = Subject.GetDownloadClient(DownloadProtocol.Torrent, 0, false, seriesTags);
var client3 = Subject.GetDownloadClient(DownloadProtocol.Torrent, 0, false, seriesTags);
var client4 = Subject.GetDownloadClient(DownloadProtocol.Torrent, 0, false, seriesTags);
Subject.GetDownloadClient(DownloadProtocol.Torrent, 0, false, seriesTags).Should().BeNull(); Assert.Throws<DownloadClientUnavailableException>(() => Subject.GetDownloadClient(DownloadProtocol.Torrent, 0, false, seriesTags));
} }
[Test] [Test]

@ -41,18 +41,23 @@ namespace NzbDrone.Core.Download
var blockedProviders = new HashSet<int>(_downloadClientStatusService.GetBlockedProviders().Select(v => v.ProviderId)); var blockedProviders = new HashSet<int>(_downloadClientStatusService.GetBlockedProviders().Select(v => v.ProviderId));
var availableProviders = _downloadClientFactory.GetAvailableProviders().Where(v => v.Protocol == downloadProtocol).ToList(); var availableProviders = _downloadClientFactory.GetAvailableProviders().Where(v => v.Protocol == downloadProtocol).ToList();
if (tags != null) if (!availableProviders.Any())
{
return null;
}
if (tags is { Count: > 0 })
{ {
var matchingTagsClients = availableProviders.Where(i => i.Definition.Tags.Intersect(tags).Any()).ToList(); var matchingTagsClients = availableProviders.Where(i => i.Definition.Tags.Intersect(tags).Any()).ToList();
availableProviders = matchingTagsClients.Count > 0 ? availableProviders = matchingTagsClients.Count > 0 ?
matchingTagsClients : matchingTagsClients :
availableProviders.Where(i => i.Definition.Tags.Empty()).ToList(); availableProviders.Where(i => i.Definition.Tags.Empty()).ToList();
}
if (!availableProviders.Any()) if (!availableProviders.Any())
{ {
return null; throw new DownloadClientUnavailableException("No download client was found without tags or a matching author tag. Please check your settings.");
}
} }
if (indexerId > 0) if (indexerId > 0)

Loading…
Cancel
Save