From e185ba01918dd6f1e199898a08aa9f536af666d0 Mon Sep 17 00:00:00 2001 From: Tim Turner Date: Tue, 31 Jan 2017 15:11:33 -0500 Subject: [PATCH] Don't display mapped movies in import list When importing existing movies, don't list those which already exist in the collection. --- .../RootFolders/RootFolderResource.cs | 4 +- .../RootFolders/RootFolderService.cs | 44 +++++++++++++++++-- src/UI/AddMovies/AddMoviesLayout.js | 4 +- 3 files changed, 45 insertions(+), 7 deletions(-) diff --git a/src/NzbDrone.Api/RootFolders/RootFolderResource.cs b/src/NzbDrone.Api/RootFolders/RootFolderResource.cs index 86efef529..8be6194ca 100644 --- a/src/NzbDrone.Api/RootFolders/RootFolderResource.cs +++ b/src/NzbDrone.Api/RootFolders/RootFolderResource.cs @@ -38,8 +38,8 @@ namespace NzbDrone.Api.RootFolders Id = resource.Id, Path = resource.Path, - //FreeSpace - //UnmappedFolders + FreeSpace = resource.FreeSpace, + UnmappedFolders = resource.UnmappedFolders }; } diff --git a/src/NzbDrone.Core/RootFolders/RootFolderService.cs b/src/NzbDrone.Core/RootFolders/RootFolderService.cs index bf4d06972..5820ea8c0 100644 --- a/src/NzbDrone.Core/RootFolders/RootFolderService.cs +++ b/src/NzbDrone.Core/RootFolders/RootFolderService.cs @@ -25,6 +25,7 @@ namespace NzbDrone.Core.RootFolders private readonly IRootFolderRepository _rootFolderRepository; private readonly IDiskProvider _diskProvider; private readonly ISeriesRepository _seriesRepository; + private readonly IMovieRepository _movieRepository; private readonly IConfigService _configService; private readonly Logger _logger; @@ -44,12 +45,14 @@ namespace NzbDrone.Core.RootFolders public RootFolderService(IRootFolderRepository rootFolderRepository, IDiskProvider diskProvider, ISeriesRepository seriesRepository, + IMovieRepository movieRepository, IConfigService configService, Logger logger) { _rootFolderRepository = rootFolderRepository; _diskProvider = diskProvider; _seriesRepository = seriesRepository; + _movieRepository = movieRepository; _configService = configService; _logger = logger; } @@ -128,6 +131,41 @@ namespace NzbDrone.Core.RootFolders _rootFolderRepository.Delete(id); } + //private List GetUnmappedFolders(string path) + //{ + // _logger.Debug("Generating list of unmapped folders"); + // if (string.IsNullOrEmpty(path)) + // throw new ArgumentException("Invalid path provided", "path"); + + // var results = new List(); + // var series = _seriesRepository.All().ToList(); + + // if (!_diskProvider.FolderExists(path)) + // { + // _logger.Debug("Path supplied does not exist: {0}", path); + // return results; + // } + + // var seriesFolders = _diskProvider.GetDirectories(path).ToList(); + // var unmappedFolders = seriesFolders.Except(series.Select(s => s.Path), PathEqualityComparer.Instance).ToList(); + + // foreach (string unmappedFolder in unmappedFolders) + // { + // var di = new DirectoryInfo(unmappedFolder.Normalize()); + // if (!di.Attributes.HasFlag(FileAttributes.System) && !di.Attributes.HasFlag(FileAttributes.Hidden)) + // { + // results.Add(new UnmappedFolder { Name = di.Name, Path = di.FullName }); + // } + + // } + + // var setToRemove = SpecialFolders; + // results.RemoveAll(x => setToRemove.Contains(new DirectoryInfo(x.Path.ToLowerInvariant()).Name)); + + // _logger.Debug("{0} unmapped folders detected.", results.Count); + // return results; + //} + private List GetUnmappedFolders(string path) { _logger.Debug("Generating list of unmapped folders"); @@ -135,7 +173,7 @@ namespace NzbDrone.Core.RootFolders throw new ArgumentException("Invalid path provided", "path"); var results = new List(); - var series = _seriesRepository.All().ToList(); + var movies = _movieRepository.All().ToList(); if (!_diskProvider.FolderExists(path)) { @@ -143,8 +181,8 @@ namespace NzbDrone.Core.RootFolders return results; } - var seriesFolders = _diskProvider.GetDirectories(path).ToList(); - var unmappedFolders = seriesFolders.Except(series.Select(s => s.Path), PathEqualityComparer.Instance).ToList(); + var movieFolders = _diskProvider.GetDirectories(path).ToList(); + var unmappedFolders = movieFolders.Except(movies.Select(s => s.Path), PathEqualityComparer.Instance).ToList(); foreach (string unmappedFolder in unmappedFolders) { diff --git a/src/UI/AddMovies/AddMoviesLayout.js b/src/UI/AddMovies/AddMoviesLayout.js index a219833e5..0a62ac755 100644 --- a/src/UI/AddMovies/AddMoviesLayout.js +++ b/src/UI/AddMovies/AddMoviesLayout.js @@ -55,7 +55,7 @@ module.exports = Marionette.Layout.extend({ _folderSelected : function(options) { vent.trigger(vent.Commands.CloseModalCommand); - this.ui.$existing.show(); + //this.ui.$existing.show(); this.workspace.show(new ExistingMoviesCollectionView({ model : options.model })); }, @@ -70,7 +70,7 @@ module.exports = Marionette.Layout.extend({ }, _addFromList : function() { - this.ui.$existing.hide(); + //this.ui.$existing.hide(); this.workspace.show(new AddFromListView()); } });