diff --git a/src/NzbDrone.Core/Download/TrackedDownloads/TrackedDownloadService.cs b/src/NzbDrone.Core/Download/TrackedDownloads/TrackedDownloadService.cs index efe1d2fd4..636104398 100644 --- a/src/NzbDrone.Core/Download/TrackedDownloads/TrackedDownloadService.cs +++ b/src/NzbDrone.Core/Download/TrackedDownloads/TrackedDownloadService.cs @@ -16,7 +16,7 @@ using NzbDrone.Core.Parser.Model; namespace NzbDrone.Core.Download.TrackedDownloads { - public interface ITrackedDownloadService : IHandle + public interface ITrackedDownloadService { TrackedDownload Find(string downloadId); void StopTracking(string downloadId); @@ -26,13 +26,16 @@ namespace NzbDrone.Core.Download.TrackedDownloads void UpdateTrackable(List trackedDownloads); } - public class TrackedDownloadService : ITrackedDownloadService + public class TrackedDownloadService : ITrackedDownloadService, + IHandle, + IHandle, + IHandle, + IHandle { private readonly IParsingService _parsingService; private readonly IHistoryService _historyService; private readonly IEventAggregator _eventAggregator; private readonly IDownloadHistoryService _downloadHistoryService; - private readonly ITrackedDownloadAlreadyImported _trackedDownloadAlreadyImported; private readonly ICustomFormatCalculationService _formatCalculator; private readonly Logger _logger; private readonly ICached _cache; @@ -43,7 +46,6 @@ namespace NzbDrone.Core.Download.TrackedDownloads ICustomFormatCalculationService formatCalculator, IEventAggregator eventAggregator, IDownloadHistoryService downloadHistoryService, - ITrackedDownloadAlreadyImported trackedDownloadAlreadyImported, Logger logger) { _parsingService = parsingService; @@ -51,7 +53,6 @@ namespace NzbDrone.Core.Download.TrackedDownloads _cache = cacheManager.GetCache(GetType()); _formatCalculator = formatCalculator; _eventAggregator = eventAggregator; - _trackedDownloadAlreadyImported = trackedDownloadAlreadyImported; _downloadHistoryService = downloadHistoryService; _logger = logger; } @@ -264,18 +265,6 @@ namespace NzbDrone.Core.Download.TrackedDownloads } } - public void Handle(AlbumDeletedEvent message) - { - var cachedItems = _cache.Values.Where(x => x.RemoteAlbum != null && x.RemoteAlbum.Albums.Any(a => a.Id == message.Album.Id)).ToList(); - - if (cachedItems.Any()) - { - cachedItems.ForEach(UpdateCachedItem); - - _eventAggregator.PublishEvent(new TrackedDownloadRefreshedEvent(GetTrackedDownloads())); - } - } - public void Handle(AlbumInfoRefreshedEvent message) { var needsToUpdate = false; @@ -301,12 +290,45 @@ namespace NzbDrone.Core.Download.TrackedDownloads } } + public void Handle(AlbumDeletedEvent message) + { + var cachedItems = _cache.Values + .Where(t => + t.RemoteAlbum?.Albums != null && + t.RemoteAlbum.Albums.Any(a => a.Id == message.Album.Id || a.ForeignAlbumId == message.Album.ForeignAlbumId)) + .ToList(); + + if (cachedItems.Any()) + { + cachedItems.ForEach(UpdateCachedItem); + + _eventAggregator.PublishEvent(new TrackedDownloadRefreshedEvent(GetTrackedDownloads())); + } + } + + public void Handle(ArtistAddedEvent message) + { + var cachedItems = _cache.Values + .Where(t => + t.RemoteAlbum?.Artist == null || + message.Artist?.ForeignArtistId == t.RemoteAlbum.Artist.ForeignArtistId) + .ToList(); + + if (cachedItems.Any()) + { + cachedItems.ForEach(UpdateCachedItem); + + _eventAggregator.PublishEvent(new TrackedDownloadRefreshedEvent(GetTrackedDownloads())); + } + } + public void Handle(ArtistsDeletedEvent message) { - var cachedItems = _cache.Values.Where(t => - t.RemoteAlbum?.Artist != null && - message.Artists.Select(a => a.Id).Contains(t.RemoteAlbum.Artist.Id)) - .ToList(); + var cachedItems = _cache.Values + .Where(t => + t.RemoteAlbum?.Artist != null && + message.Artists.Any(a => a.Id == t.RemoteAlbum.Artist.Id || a.ForeignArtistId == t.RemoteAlbum.Artist.ForeignArtistId)) + .ToList(); if (cachedItems.Any()) {