|
|
|
@ -63,6 +63,7 @@ namespace NzbDrone.Core.RootFolders
|
|
|
|
|
public List<RootFolder> AllWithUnmappedFolders()
|
|
|
|
|
{
|
|
|
|
|
var rootFolders = _rootFolderRepository.All().ToList();
|
|
|
|
|
var seriesPaths = _seriesRepository.AllSeriesPaths();
|
|
|
|
|
|
|
|
|
|
rootFolders.ForEach(folder =>
|
|
|
|
|
{
|
|
|
|
@ -70,7 +71,7 @@ namespace NzbDrone.Core.RootFolders
|
|
|
|
|
{
|
|
|
|
|
if (folder.Path.IsPathValid())
|
|
|
|
|
{
|
|
|
|
|
GetDetails(folder, true);
|
|
|
|
|
GetDetails(folder, seriesPaths, true);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//We don't want an exception to prevent the root folders from loading in the UI, so they can still be deleted
|
|
|
|
@ -109,8 +110,9 @@ namespace NzbDrone.Core.RootFolders
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_rootFolderRepository.Insert(rootFolder);
|
|
|
|
|
var seriesPaths = _seriesRepository.AllSeriesPaths();
|
|
|
|
|
|
|
|
|
|
GetDetails(rootFolder, true);
|
|
|
|
|
GetDetails(rootFolder, seriesPaths, true);
|
|
|
|
|
|
|
|
|
|
return rootFolder;
|
|
|
|
|
}
|
|
|
|
@ -120,7 +122,7 @@ namespace NzbDrone.Core.RootFolders
|
|
|
|
|
_rootFolderRepository.Delete(id);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private List<UnmappedFolder> GetUnmappedFolders(string path)
|
|
|
|
|
private List<UnmappedFolder> GetUnmappedFolders(string path, List<string> seriesPaths)
|
|
|
|
|
{
|
|
|
|
|
_logger.Debug("Generating list of unmapped folders");
|
|
|
|
|
|
|
|
|
@ -130,7 +132,6 @@ namespace NzbDrone.Core.RootFolders
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var results = new List<UnmappedFolder>();
|
|
|
|
|
var series = _seriesRepository.All().ToList();
|
|
|
|
|
|
|
|
|
|
if (!_diskProvider.FolderExists(path))
|
|
|
|
|
{
|
|
|
|
@ -139,7 +140,7 @@ namespace NzbDrone.Core.RootFolders
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var possibleSeriesFolders = _diskProvider.GetDirectories(path).ToList();
|
|
|
|
|
var unmappedFolders = possibleSeriesFolders.Except(series.Select(s => s.Path), PathEqualityComparer.Instance).ToList();
|
|
|
|
|
var unmappedFolders = possibleSeriesFolders.Except(seriesPaths, PathEqualityComparer.Instance).ToList();
|
|
|
|
|
|
|
|
|
|
foreach (string unmappedFolder in unmappedFolders)
|
|
|
|
|
{
|
|
|
|
@ -157,7 +158,9 @@ namespace NzbDrone.Core.RootFolders
|
|
|
|
|
public RootFolder Get(int id, bool timeout)
|
|
|
|
|
{
|
|
|
|
|
var rootFolder = _rootFolderRepository.Get(id);
|
|
|
|
|
GetDetails(rootFolder, timeout);
|
|
|
|
|
var seriesPaths = _seriesRepository.AllSeriesPaths();
|
|
|
|
|
|
|
|
|
|
GetDetails(rootFolder, seriesPaths, timeout);
|
|
|
|
|
|
|
|
|
|
return rootFolder;
|
|
|
|
|
}
|
|
|
|
@ -176,7 +179,7 @@ namespace NzbDrone.Core.RootFolders
|
|
|
|
|
return possibleRootFolder.Path;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void GetDetails(RootFolder rootFolder, bool timeout)
|
|
|
|
|
private void GetDetails(RootFolder rootFolder, List<string> seriesPaths, bool timeout)
|
|
|
|
|
{
|
|
|
|
|
Task.Run(() =>
|
|
|
|
|
{
|
|
|
|
@ -185,7 +188,7 @@ namespace NzbDrone.Core.RootFolders
|
|
|
|
|
rootFolder.Accessible = true;
|
|
|
|
|
rootFolder.FreeSpace = _diskProvider.GetAvailableSpace(rootFolder.Path);
|
|
|
|
|
rootFolder.TotalSpace = _diskProvider.GetTotalSize(rootFolder.Path);
|
|
|
|
|
rootFolder.UnmappedFolders = GetUnmappedFolders(rootFolder.Path);
|
|
|
|
|
rootFolder.UnmappedFolders = GetUnmappedFolders(rootFolder.Path, seriesPaths);
|
|
|
|
|
}
|
|
|
|
|
}).Wait(timeout ? 5000 : -1);
|
|
|
|
|
}
|
|
|
|
|