diff --git a/frontend/src/Settings/NetImport/NetImport/AddNetImportModalContent.js b/frontend/src/Settings/NetImport/NetImport/AddNetImportModalContent.js
index 7824a554e..2b89eff7b 100644
--- a/frontend/src/Settings/NetImport/NetImport/AddNetImportModalContent.js
+++ b/frontend/src/Settings/NetImport/NetImport/AddNetImportModalContent.js
@@ -10,6 +10,7 @@ import ModalHeader from 'Components/Modal/ModalHeader';
import ModalBody from 'Components/Modal/ModalBody';
import ModalFooter from 'Components/Modal/ModalFooter';
import AddNetImportItem from './AddNetImportItem';
+import titleCase from 'Utilities/String/titleCase';
import styles from './AddNetImportModalContent.css';
class AddNetImportModalContent extends Component {
@@ -22,7 +23,7 @@ class AddNetImportModalContent extends Component {
isSchemaFetching,
isSchemaPopulated,
schemaError,
- netImports,
+ listGroups,
onNetImportSelect,
onModalClose
} = this.props;
@@ -53,22 +54,28 @@ class AddNetImportModalContent extends Component {
For more information on the individual netImports, clink on the info buttons.
-
+ {
+ Object.keys(listGroups).map((key) => {
+ return (
+
+ );
+ })
+ }
}
@@ -88,7 +95,7 @@ AddNetImportModalContent.propTypes = {
isSchemaFetching: PropTypes.bool.isRequired,
isSchemaPopulated: PropTypes.bool.isRequired,
schemaError: PropTypes.object,
- netImports: PropTypes.arrayOf(PropTypes.object).isRequired,
+ listGroups: PropTypes.object.isRequired,
onNetImportSelect: PropTypes.func.isRequired,
onModalClose: PropTypes.func.isRequired
};
diff --git a/frontend/src/Settings/NetImport/NetImport/AddNetImportModalContentConnector.js b/frontend/src/Settings/NetImport/NetImport/AddNetImportModalContentConnector.js
index 39e43b366..b721ffda9 100644
--- a/frontend/src/Settings/NetImport/NetImport/AddNetImportModalContentConnector.js
+++ b/frontend/src/Settings/NetImport/NetImport/AddNetImportModalContentConnector.js
@@ -1,3 +1,4 @@
+import _ from 'lodash';
import PropTypes from 'prop-types';
import React, { Component } from 'react';
import { connect } from 'react-redux';
@@ -16,11 +17,16 @@ function createMapStateToProps() {
schema
} = netImports;
+ const listGroups = _.chain(schema)
+ .sortBy((o) => o.listOrder)
+ .groupBy('listType')
+ .value();
+
return {
isSchemaFetching,
isSchemaPopulated,
schemaError,
- netImports: schema
+ listGroups
};
}
);
diff --git a/src/NzbDrone.Core/Datastore/TableMapping.cs b/src/NzbDrone.Core/Datastore/TableMapping.cs
index c17e6fd93..06bce9794 100644
--- a/src/NzbDrone.Core/Datastore/TableMapping.cs
+++ b/src/NzbDrone.Core/Datastore/TableMapping.cs
@@ -72,6 +72,7 @@ namespace NzbDrone.Core.Datastore
Mapper.Entity("NetImport").RegisterModel()
.Ignore(x => x.ImplementationName)
+ .Ignore(i => i.ListType)
.Ignore(i => i.Enable);
Mapper.Entity("Notifications").RegisterModel()
diff --git a/src/NzbDrone.Core/NetImport/CouchPotato/CouchPotatoImport.cs b/src/NzbDrone.Core/NetImport/CouchPotato/CouchPotatoImport.cs
index 130eb1144..3a51f256d 100644
--- a/src/NzbDrone.Core/NetImport/CouchPotato/CouchPotatoImport.cs
+++ b/src/NzbDrone.Core/NetImport/CouchPotato/CouchPotatoImport.cs
@@ -8,6 +8,8 @@ namespace NzbDrone.Core.NetImport.CouchPotato
public class CouchPotatoImport : HttpNetImportBase
{
public override string Name => "CouchPotato";
+
+ public override NetImportType ListType => NetImportType.Other;
public override bool Enabled => true;
public override bool EnableAuto => false;
diff --git a/src/NzbDrone.Core/NetImport/INetImport.cs b/src/NzbDrone.Core/NetImport/INetImport.cs
index d0af784f9..e4c69ec2d 100644
--- a/src/NzbDrone.Core/NetImport/INetImport.cs
+++ b/src/NzbDrone.Core/NetImport/INetImport.cs
@@ -7,6 +7,7 @@ namespace NzbDrone.Core.NetImport
bool Enabled { get; }
bool EnableAuto { get; }
+ NetImportType ListType { get; }
NetImportFetchResult Fetch();
}
}
diff --git a/src/NzbDrone.Core/NetImport/NetImportBase.cs b/src/NzbDrone.Core/NetImport/NetImportBase.cs
index a12fcab84..17bb41356 100644
--- a/src/NzbDrone.Core/NetImport/NetImportBase.cs
+++ b/src/NzbDrone.Core/NetImport/NetImportBase.cs
@@ -23,6 +23,8 @@ namespace NzbDrone.Core.NetImport
protected readonly Logger _logger;
public abstract string Name { get; }
+
+ public abstract NetImportType ListType { get; }
public abstract bool Enabled { get; }
public abstract bool EnableAuto { get; }
diff --git a/src/NzbDrone.Core/NetImport/NetImportDefinition.cs b/src/NzbDrone.Core/NetImport/NetImportDefinition.cs
index 2ca6d0f27..1169a4974 100644
--- a/src/NzbDrone.Core/NetImport/NetImportDefinition.cs
+++ b/src/NzbDrone.Core/NetImport/NetImportDefinition.cs
@@ -18,5 +18,7 @@ namespace NzbDrone.Core.NetImport
public int ProfileId { get; set; }
public string RootFolderPath { get; set; }
public override bool Enable => Enabled;
+
+ public NetImportType ListType { get; set; }
}
}
diff --git a/src/NzbDrone.Core/NetImport/NetImportFactory.cs b/src/NzbDrone.Core/NetImport/NetImportFactory.cs
index 2d6b71f9c..963d4e323 100644
--- a/src/NzbDrone.Core/NetImport/NetImportFactory.cs
+++ b/src/NzbDrone.Core/NetImport/NetImportFactory.cs
@@ -39,6 +39,8 @@ namespace NzbDrone.Core.NetImport
public override void SetProviderCharacteristics(INetImport provider, NetImportDefinition definition)
{
base.SetProviderCharacteristics(provider, definition);
+
+ definition.ListType = provider.ListType;
}
public List Enabled()
diff --git a/src/NzbDrone.Core/NetImport/NetImportType.cs b/src/NzbDrone.Core/NetImport/NetImportType.cs
new file mode 100644
index 000000000..6ac07af0b
--- /dev/null
+++ b/src/NzbDrone.Core/NetImport/NetImportType.cs
@@ -0,0 +1,8 @@
+namespace NzbDrone.Core.NetImport
+{
+ public enum NetImportType
+ {
+ TMDB,
+ Other
+ }
+}
diff --git a/src/NzbDrone.Core/NetImport/RSSImport/RSSImport.cs b/src/NzbDrone.Core/NetImport/RSSImport/RSSImport.cs
index 06dcd6f3d..6ec52ae54 100644
--- a/src/NzbDrone.Core/NetImport/RSSImport/RSSImport.cs
+++ b/src/NzbDrone.Core/NetImport/RSSImport/RSSImport.cs
@@ -10,6 +10,8 @@ namespace NzbDrone.Core.NetImport.RSSImport
public class RSSImport : HttpNetImportBase
{
public override string Name => "RSSList";
+
+ public override NetImportType ListType => NetImportType.Other;
public override bool Enabled => true;
public override bool EnableAuto => false;
diff --git a/src/NzbDrone.Core/NetImport/Radarr/RadarrLists.cs b/src/NzbDrone.Core/NetImport/Radarr/RadarrLists.cs
index e0ec2bc07..6d316dad3 100644
--- a/src/NzbDrone.Core/NetImport/Radarr/RadarrLists.cs
+++ b/src/NzbDrone.Core/NetImport/Radarr/RadarrLists.cs
@@ -11,6 +11,8 @@ namespace NzbDrone.Core.NetImport.Radarr
public class RadarrLists : HttpNetImportBase
{
public override string Name => "Radarr Lists";
+
+ public override NetImportType ListType => NetImportType.Other;
public override bool Enabled => true;
public override bool EnableAuto => false;
diff --git a/src/NzbDrone.Core/NetImport/StevenLu/StevenLuImport.cs b/src/NzbDrone.Core/NetImport/StevenLu/StevenLuImport.cs
index 8ec74b9ca..a3071cd91 100644
--- a/src/NzbDrone.Core/NetImport/StevenLu/StevenLuImport.cs
+++ b/src/NzbDrone.Core/NetImport/StevenLu/StevenLuImport.cs
@@ -8,6 +8,8 @@ namespace NzbDrone.Core.NetImport.StevenLu
public class StevenLuImport : HttpNetImportBase
{
public override string Name => "StevenLu";
+
+ public override NetImportType ListType => NetImportType.Other;
public override bool Enabled => true;
public override bool EnableAuto => false;
diff --git a/src/NzbDrone.Core/NetImport/TMDb/TMDbImport.cs b/src/NzbDrone.Core/NetImport/TMDb/TMDbImport.cs
index ec32da5f3..bf31fe7a5 100644
--- a/src/NzbDrone.Core/NetImport/TMDb/TMDbImport.cs
+++ b/src/NzbDrone.Core/NetImport/TMDb/TMDbImport.cs
@@ -9,6 +9,8 @@ namespace NzbDrone.Core.NetImport.TMDb
public class TMDbImport : HttpNetImportBase
{
public override string Name => "TMDb Lists";
+
+ public override NetImportType ListType => NetImportType.TMDB;
public override bool Enabled => true;
public override bool EnableAuto => false;
diff --git a/src/NzbDrone.Core/NetImport/Trakt/TraktImport.cs b/src/NzbDrone.Core/NetImport/Trakt/TraktImport.cs
index 695e77703..82c398586 100644
--- a/src/NzbDrone.Core/NetImport/Trakt/TraktImport.cs
+++ b/src/NzbDrone.Core/NetImport/Trakt/TraktImport.cs
@@ -11,6 +11,8 @@ namespace NzbDrone.Core.NetImport.Trakt
public class TraktImport : HttpNetImportBase
{
public override string Name => "Trakt List";
+
+ public override NetImportType ListType => NetImportType.Other;
public override bool Enabled => true;
public override bool EnableAuto => false;
diff --git a/src/Radarr.Api.V3/NetImport/NetImportResource.cs b/src/Radarr.Api.V3/NetImport/NetImportResource.cs
index e7e4790dc..85e992c5e 100644
--- a/src/Radarr.Api.V3/NetImport/NetImportResource.cs
+++ b/src/Radarr.Api.V3/NetImport/NetImportResource.cs
@@ -11,6 +11,8 @@ namespace Radarr.Api.V3.NetImport
public string RootFolderPath { get; set; }
public int QualityProfileId { get; set; }
public MovieStatusType MinimumAvailability { get; set; }
+ public NetImportType ListType { get; set; }
+ public int ListOrder { get; set; }
}
public class NetImportResourceMapper : ProviderResourceMapper
@@ -30,6 +32,8 @@ namespace Radarr.Api.V3.NetImport
resource.RootFolderPath = definition.RootFolderPath;
resource.QualityProfileId = definition.ProfileId;
resource.MinimumAvailability = definition.MinimumAvailability;
+ resource.ListType = definition.ListType;
+ resource.ListOrder = (int)definition.ListType;
return resource;
}
@@ -49,6 +53,7 @@ namespace Radarr.Api.V3.NetImport
definition.RootFolderPath = resource.RootFolderPath;
definition.ProfileId = resource.QualityProfileId;
definition.MinimumAvailability = resource.MinimumAvailability;
+ definition.ListType = resource.ListType;
return definition;
}