diff --git a/src/NzbDrone.Api/RootFolders/RootFolderModule.cs b/src/NzbDrone.Api/RootFolders/RootFolderModule.cs index e87e581de..30bfcc635 100644 --- a/src/NzbDrone.Api/RootFolders/RootFolderModule.cs +++ b/src/NzbDrone.Api/RootFolders/RootFolderModule.cs @@ -52,7 +52,7 @@ namespace NzbDrone.Api.RootFolders private List GetRootFolders() { - return _rootFolderService.AllWithUnmappedFolders().ToResource(); + return _rootFolderService.AllWithSpace().ToResource(); } private void DeleteFolder(int id) diff --git a/src/NzbDrone.Core/RootFolders/RootFolderService.cs b/src/NzbDrone.Core/RootFolders/RootFolderService.cs index 229c5f8ba..437e102a7 100644 --- a/src/NzbDrone.Core/RootFolders/RootFolderService.cs +++ b/src/NzbDrone.Core/RootFolders/RootFolderService.cs @@ -15,6 +15,7 @@ namespace NzbDrone.Core.RootFolders { List All(); List AllWithUnmappedFolders(); + List AllWithSpace(); RootFolder Add(RootFolder rootDir); void Remove(int id); RootFolder Get(int id); @@ -62,6 +63,31 @@ namespace NzbDrone.Core.RootFolders return rootFolders; } + public List AllWithSpace() + { + var rootFolders = _rootFolderRepository.All().ToList(); + + rootFolders.ForEach(folder => + { + try + { + if (folder.Path.IsPathValid() && _diskProvider.FolderExists(folder.Path)) + { + folder.FreeSpace = _diskProvider.GetAvailableSpace(folder.Path); + folder.TotalSpace = _diskProvider.GetTotalSize(folder.Path); + } + } + //We don't want an exception to prevent the root folders from loading in the UI, so they can still be deleted + catch (Exception ex) + { + folder.FreeSpace = 0; + _logger.Error(ex, "Unable to get free space for root folder {0}", folder.Path); + } + }); + + return rootFolders; + } + public List AllWithUnmappedFolders() { var rootFolders = _rootFolderRepository.All().ToList();