diff --git a/frontend/src/AddMovie/ImportMovie/Import/ImportMovie.js b/frontend/src/AddMovie/ImportMovie/Import/ImportMovie.js
index 3a3889ab7..2d788eef7 100644
--- a/frontend/src/AddMovie/ImportMovie/Import/ImportMovie.js
+++ b/frontend/src/AddMovie/ImportMovie/Import/ImportMovie.js
@@ -79,7 +79,6 @@ class ImportMovie extends Component {
rootFolderId,
path,
rootFoldersFetching,
- rootFoldersPopulated,
rootFoldersError,
unmappedFolders
} = this.props;
@@ -98,24 +97,30 @@ class ImportMovie extends Component {
onScroll={this.onScroll}
>
{
- rootFoldersFetching && !rootFoldersPopulated &&
-
+ rootFoldersFetching ? : null
}
{
- !rootFoldersFetching && !!rootFoldersError &&
-
Unable to load root folders
+ !rootFoldersFetching && !!rootFoldersError ?
+ Unable to load root folders
:
+ null
}
{
- !rootFoldersError && rootFoldersPopulated && !unmappedFolders.length &&
+ !rootFoldersError &&
+ !rootFoldersFetching &&
+ !unmappedFolders.length ?
All movies in {path} have been imported
-
+ :
+ null
}
{
- !rootFoldersError && rootFoldersPopulated && !!unmappedFolders.length && scroller &&
+ !rootFoldersError &&
+ !rootFoldersFetching &&
+ !!unmappedFolders.length &&
+ scroller ?
+ /> :
+ null
}
{
- !rootFoldersError && rootFoldersPopulated && !!unmappedFolders.length &&
+ !rootFoldersError &&
+ !rootFoldersFetching &&
+ !!unmappedFolders.length ?
+ /> :
+ null
}
);
diff --git a/frontend/src/AddMovie/ImportMovie/Import/ImportMovieConnector.js b/frontend/src/AddMovie/ImportMovie/Import/ImportMovieConnector.js
index 4c30cfef8..963fd776a 100644
--- a/frontend/src/AddMovie/ImportMovie/Import/ImportMovieConnector.js
+++ b/frontend/src/AddMovie/ImportMovie/Import/ImportMovieConnector.js
@@ -71,15 +71,14 @@ class ImportMovieConnector extends Component {
componentDidMount() {
const {
+ rootFolderId,
qualityProfiles,
defaultQualityProfileId,
dispatchFetchRootFolders,
dispatchSetAddMovieDefault
} = this.props;
- if (!this.props.rootFoldersPopulated) {
- dispatchFetchRootFolders();
- }
+ dispatchFetchRootFolders({ id: rootFolderId, timeout: false });
let setDefaults = false;
const setDefaultPayload = {};
@@ -139,6 +138,8 @@ const routeMatchShape = createRouteMatchShape({
ImportMovieConnector.propTypes = {
match: routeMatchShape.isRequired,
+ rootFolderId: PropTypes.number.isRequired,
+ rootFoldersFetching: PropTypes.bool.isRequired,
rootFoldersPopulated: PropTypes.bool.isRequired,
qualityProfiles: PropTypes.arrayOf(PropTypes.object).isRequired,
defaultQualityProfileId: PropTypes.number.isRequired,
diff --git a/src/NzbDrone.Api/Movies/MovieBulkImportModule.cs b/src/NzbDrone.Api/Movies/MovieBulkImportModule.cs
index 8bdbd0ba6..eb3886c55 100644
--- a/src/NzbDrone.Api/Movies/MovieBulkImportModule.cs
+++ b/src/NzbDrone.Api/Movies/MovieBulkImportModule.cs
@@ -66,7 +66,7 @@ namespace NzbDrone.Api.Movies
Profile tempProfile = _profileService.All().First();
- RootFolder rootFolder = _rootFolderService.Get(Request.Query.Id);
+ RootFolder rootFolder = _rootFolderService.Get(Request.Query.Id, true);
int page = Request.Query.page;
int per_page = Request.Query.per_page;
diff --git a/src/NzbDrone.Api/RootFolders/RootFolderModule.cs b/src/NzbDrone.Api/RootFolders/RootFolderModule.cs
index 0239c4d65..c392af27a 100644
--- a/src/NzbDrone.Api/RootFolders/RootFolderModule.cs
+++ b/src/NzbDrone.Api/RootFolders/RootFolderModule.cs
@@ -41,7 +41,7 @@ namespace NzbDrone.Api.RootFolders
private RootFolderResource GetRootFolder(int id)
{
- return _rootFolderService.Get(id).ToResource();
+ return _rootFolderService.Get(id, true).ToResource();
}
private int CreateRootFolder(RootFolderResource rootFolderResource)
diff --git a/src/NzbDrone.Core.Test/RootFolderTests/RootFolderServiceFixture.cs b/src/NzbDrone.Core.Test/RootFolderTests/RootFolderServiceFixture.cs
index 870c9147b..7f9a1a586 100644
--- a/src/NzbDrone.Core.Test/RootFolderTests/RootFolderServiceFixture.cs
+++ b/src/NzbDrone.Core.Test/RootFolderTests/RootFolderServiceFixture.cs
@@ -142,7 +142,7 @@ namespace NzbDrone.Core.Test.RootFolderTests
.Setup(s => s.GetDirectories(rootFolder.Path))
.Returns(folders);
- var unmappedFolders = Subject.Get(rootFolder.Id).UnmappedFolders;
+ var unmappedFolders = Subject.Get(rootFolder.Id, true).UnmappedFolders;
unmappedFolders.Count.Should().BeGreaterThan(0);
unmappedFolders.Should().NotContain(u => u.Name == subFolder);
diff --git a/src/NzbDrone.Core/RootFolders/RootFolderService.cs b/src/NzbDrone.Core/RootFolders/RootFolderService.cs
index cd16873b6..8382aa0bd 100644
--- a/src/NzbDrone.Core/RootFolders/RootFolderService.cs
+++ b/src/NzbDrone.Core/RootFolders/RootFolderService.cs
@@ -18,7 +18,7 @@ namespace NzbDrone.Core.RootFolders
List AllWithUnmappedFolders();
RootFolder Add(RootFolder rootDir);
void Remove(int id);
- RootFolder Get(int id);
+ RootFolder Get(int id, bool timeout);
string GetBestRootFolderPath(string path);
}
@@ -73,7 +73,7 @@ namespace NzbDrone.Core.RootFolders
{
if (folder.Path.IsPathValid())
{
- GetDetails(folder);
+ GetDetails(folder, true);
}
}
@@ -114,7 +114,7 @@ namespace NzbDrone.Core.RootFolders
_rootFolderRepository.Insert(rootFolder);
- GetDetails(rootFolder);
+ GetDetails(rootFolder, true);
return rootFolder;
}
@@ -161,10 +161,10 @@ namespace NzbDrone.Core.RootFolders
return results.OrderBy(u => u.Name, StringComparer.InvariantCultureIgnoreCase).ToList();
}
- public RootFolder Get(int id)
+ public RootFolder Get(int id, bool timeout)
{
var rootFolder = _rootFolderRepository.Get(id);
- GetDetails(rootFolder);
+ GetDetails(rootFolder, timeout);
return rootFolder;
}
@@ -183,7 +183,7 @@ namespace NzbDrone.Core.RootFolders
return possibleRootFolder.Path;
}
- private void GetDetails(RootFolder rootFolder)
+ private void GetDetails(RootFolder rootFolder, bool timeout)
{
Task.Run(() =>
{
@@ -194,7 +194,7 @@ namespace NzbDrone.Core.RootFolders
rootFolder.TotalSpace = _diskProvider.GetTotalSize(rootFolder.Path);
rootFolder.UnmappedFolders = GetUnmappedFolders(rootFolder.Path);
}
- }).Wait(5000);
+ }).Wait(timeout ? 5000 : -1);
}
}
}
diff --git a/src/Radarr.Api.V3/RootFolders/RootFolderModule.cs b/src/Radarr.Api.V3/RootFolders/RootFolderModule.cs
index 517b5fb9e..56ab08546 100644
--- a/src/Radarr.Api.V3/RootFolders/RootFolderModule.cs
+++ b/src/Radarr.Api.V3/RootFolders/RootFolderModule.cs
@@ -4,6 +4,7 @@ using NzbDrone.Core.RootFolders;
using NzbDrone.Core.Validation.Paths;
using NzbDrone.SignalR;
using Radarr.Http;
+using Radarr.Http.Extensions;
namespace Radarr.Api.V3.RootFolders
{
@@ -41,7 +42,9 @@ namespace Radarr.Api.V3.RootFolders
private RootFolderResource GetRootFolder(int id)
{
- return _rootFolderService.Get(id).ToResource();
+ var timeout = Request.GetBooleanQueryParameter("timeout", true);
+
+ return _rootFolderService.Get(id, timeout).ToResource();
}
private int CreateRootFolder(RootFolderResource rootFolderResource)