diff --git a/src/NzbDrone.Core/Download/TrackedDownloads/TrackedDownloadService.cs b/src/NzbDrone.Core/Download/TrackedDownloads/TrackedDownloadService.cs index 05b3e25c0..7d376cc23 100644 --- a/src/NzbDrone.Core/Download/TrackedDownloads/TrackedDownloadService.cs +++ b/src/NzbDrone.Core/Download/TrackedDownloads/TrackedDownloadService.cs @@ -28,6 +28,7 @@ public interface ITrackedDownloadService } public class TrackedDownloadService : ITrackedDownloadService, + IHandle, IHandle { private readonly IParsingService _parsingService; @@ -250,12 +251,29 @@ private void LogItemChange(TrackedDownload trackedDownload, DownloadClientItem e } } + public void Handle(MovieAddedEvent message) + { + var cachedItems = _cache.Values + .Where(t => + t.RemoteMovie?.Movie == null || + message.Movie?.TmdbId == t.RemoteMovie.Movie.TmdbId) + .ToList(); + + if (cachedItems.Any()) + { + cachedItems.ForEach(UpdateCachedItem); + + _eventAggregator.PublishEvent(new TrackedDownloadRefreshedEvent(GetTrackedDownloads())); + } + } + public void Handle(MoviesDeletedEvent message) { - var cachedItems = _cache.Values.Where(t => - t.RemoteMovie?.Movie != null && - message.Movies.Any(m => m.Id == t.RemoteMovie.Movie.Id)) - .ToList(); + var cachedItems = _cache.Values + .Where(t => + t.RemoteMovie?.Movie != null && + message.Movies.Any(m => m.Id == t.RemoteMovie.Movie.Id || m.TmdbId == t.RemoteMovie.Movie.TmdbId)) + .ToList(); if (cachedItems.Any()) {