diff --git a/frontend/src/Settings/CustomFormats/CustomFormats/Specifications/EditSpecificationModalContent.js b/frontend/src/Settings/CustomFormats/CustomFormats/Specifications/EditSpecificationModalContent.js index c2ed82aad..9d062285b 100644 --- a/frontend/src/Settings/CustomFormats/CustomFormats/Specifications/EditSpecificationModalContent.js +++ b/frontend/src/Settings/CustomFormats/CustomFormats/Specifications/EditSpecificationModalContent.js @@ -41,7 +41,7 @@ function EditSpecificationModalContent(props) { return ( - {`${id ? translate('EditCondition') : translate('AddCondition')} - ${implementationName}`} + {id ? translate('EditConditionImplementation', { implementationName }) : translate('AddConditionImplementation', { implementationName })} diff --git a/frontend/src/Settings/DownloadClients/DownloadClients/EditDownloadClientModalContent.js b/frontend/src/Settings/DownloadClients/DownloadClients/EditDownloadClientModalContent.js index 1d613f018..114061b05 100644 --- a/frontend/src/Settings/DownloadClients/DownloadClients/EditDownloadClientModalContent.js +++ b/frontend/src/Settings/DownloadClients/DownloadClients/EditDownloadClientModalContent.js @@ -58,7 +58,7 @@ class EditDownloadClientModalContent extends Component { return ( - {`${id ? translate('Edit') : translate('Add')} ${translate('DownloadClient')} - ${implementationName}`} + {id ? translate('EditDownloadClientImplementation', { implementationName }) : translate('AddDownloadClientImplementation', { implementationName })} diff --git a/frontend/src/Settings/ImportLists/ImportLists/AddImportListItem.js b/frontend/src/Settings/ImportLists/ImportLists/AddImportListItem.js index 571956d20..f38fbfa8e 100644 --- a/frontend/src/Settings/ImportLists/ImportLists/AddImportListItem.js +++ b/frontend/src/Settings/ImportLists/ImportLists/AddImportListItem.js @@ -16,10 +16,12 @@ class AddImportListItem extends Component { onImportListSelect = () => { const { - implementation + implementation, + implementationName, + minRefreshInterval } = this.props; - this.props.onImportListSelect({ implementation }); + this.props.onImportListSelect({ implementation, implementationName, minRefreshInterval }); }; // @@ -29,6 +31,7 @@ class AddImportListItem extends Component { const { implementation, implementationName, + minRefreshInterval, infoLink, presets, onImportListSelect @@ -56,7 +59,7 @@ class AddImportListItem extends Component { @@ -77,6 +80,8 @@ class AddImportListItem extends Component { key={preset.name} name={preset.name} implementation={implementation} + implementationName={implementationName} + minRefreshInterval={minRefreshInterval} onPress={onImportListSelect} /> ); @@ -103,6 +108,7 @@ class AddImportListItem extends Component { AddImportListItem.propTypes = { implementation: PropTypes.string.isRequired, implementationName: PropTypes.string.isRequired, + minRefreshInterval: PropTypes.string.isRequired, infoLink: PropTypes.string.isRequired, presets: PropTypes.arrayOf(PropTypes.object), onImportListSelect: PropTypes.func.isRequired diff --git a/frontend/src/Settings/ImportLists/ImportLists/AddImportListModalContentConnector.js b/frontend/src/Settings/ImportLists/ImportLists/AddImportListModalContentConnector.js index aa918f005..99e1fbead 100644 --- a/frontend/src/Settings/ImportLists/ImportLists/AddImportListModalContentConnector.js +++ b/frontend/src/Settings/ImportLists/ImportLists/AddImportListModalContentConnector.js @@ -49,8 +49,8 @@ class AddImportListModalContentConnector extends Component { // // Listeners - onImportListSelect = ({ implementation, name }) => { - this.props.selectImportListSchema({ implementation, presetName: name }); + onImportListSelect = ({ implementation, implementationName, name, minRefreshInterval }) => { + this.props.selectImportListSchema({ implementation, implementationName, presetName: name, minRefreshInterval }); this.props.onModalClose({ listSelected: true }); }; diff --git a/frontend/src/Settings/ImportLists/ImportLists/AddImportListPresetMenuItem.js b/frontend/src/Settings/ImportLists/ImportLists/AddImportListPresetMenuItem.js index 9ba037da4..31d16db29 100644 --- a/frontend/src/Settings/ImportLists/ImportLists/AddImportListPresetMenuItem.js +++ b/frontend/src/Settings/ImportLists/ImportLists/AddImportListPresetMenuItem.js @@ -10,12 +10,16 @@ class AddImportListPresetMenuItem extends Component { onPress = () => { const { name, - implementation + implementation, + implementationName, + minRefreshInterval } = this.props; this.props.onPress({ name, - implementation + implementation, + implementationName, + minRefreshInterval }); }; @@ -26,6 +30,8 @@ class AddImportListPresetMenuItem extends Component { const { name, implementation, + implementationName, + minRefreshInterval, ...otherProps } = this.props; @@ -43,6 +49,8 @@ class AddImportListPresetMenuItem extends Component { AddImportListPresetMenuItem.propTypes = { name: PropTypes.string.isRequired, implementation: PropTypes.string.isRequired, + implementationName: PropTypes.string.isRequired, + minRefreshInterval: PropTypes.string.isRequired, onPress: PropTypes.func.isRequired }; diff --git a/frontend/src/Settings/ImportLists/ImportLists/EditImportListModalContent.js b/frontend/src/Settings/ImportLists/ImportLists/EditImportListModalContent.js index 464e76879..ec0780fff 100644 --- a/frontend/src/Settings/ImportLists/ImportLists/EditImportListModalContent.js +++ b/frontend/src/Settings/ImportLists/ImportLists/EditImportListModalContent.js @@ -43,6 +43,7 @@ function EditImportListModalContent(props) { const { id, + implementationName, name, enableAutomaticAdd, minRefreshInterval, @@ -58,7 +59,7 @@ function EditImportListModalContent(props) { return ( - {id ? translate('EditImportList') : translate('AddImportList')} + {id ? translate('EditImportListImplementation', { implementationName }) : translate('AddImportListImplementation', { implementationName })} diff --git a/frontend/src/Settings/Indexers/Indexers/AddIndexerItem.js b/frontend/src/Settings/Indexers/Indexers/AddIndexerItem.js index 58b7ce50d..5874b4fac 100644 --- a/frontend/src/Settings/Indexers/Indexers/AddIndexerItem.js +++ b/frontend/src/Settings/Indexers/Indexers/AddIndexerItem.js @@ -16,10 +16,11 @@ class AddIndexerItem extends Component { onIndexerSelect = () => { const { - implementation + implementation, + implementationName } = this.props; - this.props.onIndexerSelect({ implementation }); + this.props.onIndexerSelect({ implementation, implementationName }); }; // @@ -77,6 +78,7 @@ class AddIndexerItem extends Component { key={preset.name} name={preset.name} implementation={implementation} + implementationName={implementationName} onPress={onIndexerSelect} /> ); diff --git a/frontend/src/Settings/Indexers/Indexers/AddIndexerModalContentConnector.js b/frontend/src/Settings/Indexers/Indexers/AddIndexerModalContentConnector.js index 11861e9c2..a9c313479 100644 --- a/frontend/src/Settings/Indexers/Indexers/AddIndexerModalContentConnector.js +++ b/frontend/src/Settings/Indexers/Indexers/AddIndexerModalContentConnector.js @@ -48,8 +48,8 @@ class AddIndexerModalContentConnector extends Component { // // Listeners - onIndexerSelect = ({ implementation, name }) => { - this.props.selectIndexerSchema({ implementation, presetName: name }); + onIndexerSelect = ({ implementation, implementationName, name }) => { + this.props.selectIndexerSchema({ implementation, implementationName, presetName: name }); this.props.onModalClose({ indexerSelected: true }); }; diff --git a/frontend/src/Settings/Indexers/Indexers/AddIndexerPresetMenuItem.js b/frontend/src/Settings/Indexers/Indexers/AddIndexerPresetMenuItem.js index 03196e526..8f98d0e12 100644 --- a/frontend/src/Settings/Indexers/Indexers/AddIndexerPresetMenuItem.js +++ b/frontend/src/Settings/Indexers/Indexers/AddIndexerPresetMenuItem.js @@ -10,12 +10,14 @@ class AddIndexerPresetMenuItem extends Component { onPress = () => { const { name, - implementation + implementation, + implementationName } = this.props; this.props.onPress({ name, - implementation + implementation, + implementationName }); }; @@ -26,6 +28,7 @@ class AddIndexerPresetMenuItem extends Component { const { name, implementation, + implementationName, ...otherProps } = this.props; @@ -43,6 +46,7 @@ class AddIndexerPresetMenuItem extends Component { AddIndexerPresetMenuItem.propTypes = { name: PropTypes.string.isRequired, implementation: PropTypes.string.isRequired, + implementationName: PropTypes.string.isRequired, onPress: PropTypes.func.isRequired }; diff --git a/frontend/src/Settings/Indexers/Indexers/EditIndexerModalContent.js b/frontend/src/Settings/Indexers/Indexers/EditIndexerModalContent.js index 674e169ad..d2eba8e48 100644 --- a/frontend/src/Settings/Indexers/Indexers/EditIndexerModalContent.js +++ b/frontend/src/Settings/Indexers/Indexers/EditIndexerModalContent.js @@ -56,7 +56,7 @@ function EditIndexerModalContent(props) { return ( - {`${id ? translate('EditIndexer') : translate('AddIndexer')} - ${implementationName}`} + {id ? translate('EditIndexerImplementation', { implementationName }) : translate('AddIndexerImplementation', { implementationName })} diff --git a/frontend/src/Settings/Notifications/Notifications/AddNotificationModalContent.js b/frontend/src/Settings/Notifications/Notifications/AddNotificationModalContent.js index ff035e710..b92cdc479 100644 --- a/frontend/src/Settings/Notifications/Notifications/AddNotificationModalContent.js +++ b/frontend/src/Settings/Notifications/Notifications/AddNotificationModalContent.js @@ -28,7 +28,7 @@ class AddNotificationModalContent extends Component { return ( - {translate('AddNotification')} + {translate('AddConnection')} diff --git a/frontend/src/Settings/Notifications/Notifications/EditNotificationModalContent.js b/frontend/src/Settings/Notifications/Notifications/EditNotificationModalContent.js index 2e4b6afd5..9c3585b11 100644 --- a/frontend/src/Settings/Notifications/Notifications/EditNotificationModalContent.js +++ b/frontend/src/Settings/Notifications/Notifications/EditNotificationModalContent.js @@ -48,7 +48,7 @@ function EditNotificationModalContent(props) { return ( - {`${id ? translate('EditConnection') : translate('AddConnection')} - ${implementationName}`} + {id ? translate('EditConnectionImplementation', { implementationName }) : translate('AddConnectionImplementation', { implementationName })} diff --git a/frontend/src/Settings/Tags/AutoTagging/Specifications/EditSpecificationModalContent.js b/frontend/src/Settings/Tags/AutoTagging/Specifications/EditSpecificationModalContent.js index 872110daf..2ab1e4a1c 100644 --- a/frontend/src/Settings/Tags/AutoTagging/Specifications/EditSpecificationModalContent.js +++ b/frontend/src/Settings/Tags/AutoTagging/Specifications/EditSpecificationModalContent.js @@ -72,7 +72,7 @@ function EditSpecificationModalContent(props) { return ( - {`${id ? translate('EditCondition') : translate('AddCondition')} - ${implementationName}`} + {id ? translate('EditConditionImplementation', { implementationName }) : translate('AddConditionImplementation', { implementationName })} diff --git a/frontend/src/Store/Actions/Settings/downloadClients.js b/frontend/src/Store/Actions/Settings/downloadClients.js index d16dbd1e9..12651039d 100644 --- a/frontend/src/Store/Actions/Settings/downloadClients.js +++ b/frontend/src/Store/Actions/Settings/downloadClients.js @@ -117,6 +117,7 @@ export default { [SELECT_DOWNLOAD_CLIENT_SCHEMA]: (state, { payload }) => { return selectProviderSchema(state, section, payload, (selectedSchema) => { + selectedSchema.name = selectedSchema.implementationName; selectedSchema.enable = true; return selectedSchema; diff --git a/frontend/src/Store/Actions/Settings/importLists.js b/frontend/src/Store/Actions/Settings/importLists.js index b21fb2df7..3475fbd2b 100644 --- a/frontend/src/Store/Actions/Settings/importLists.js +++ b/frontend/src/Store/Actions/Settings/importLists.js @@ -116,10 +116,14 @@ export default { [SELECT_IMPORT_LIST_SCHEMA]: (state, { payload }) => { return selectProviderSchema(state, section, payload, (selectedSchema) => { + selectedSchema.name = payload.presetName ?? payload.implementationName; + selectedSchema.implementationName = payload.implementationName; + selectedSchema.minRefreshInterval = payload.minRefreshInterval; selectedSchema.enableAutomaticAdd = true; selectedSchema.shouldMonitor = 'all'; selectedSchema.seriesType = 'standard'; selectedSchema.seasonFolder = true; + selectedSchema.rootFolderPath = ''; return selectedSchema; }); diff --git a/frontend/src/Store/Actions/Settings/indexers.js b/frontend/src/Store/Actions/Settings/indexers.js index f4be09691..c76750cf2 100644 --- a/frontend/src/Store/Actions/Settings/indexers.js +++ b/frontend/src/Store/Actions/Settings/indexers.js @@ -121,6 +121,8 @@ export default { [SELECT_INDEXER_SCHEMA]: (state, { payload }) => { return selectProviderSchema(state, section, payload, (selectedSchema) => { + selectedSchema.name = payload.presetName ?? payload.implementationName; + selectedSchema.implementationName = payload.implementationName; selectedSchema.enableRss = selectedSchema.supportsRss; selectedSchema.enableAutomaticSearch = selectedSchema.supportsSearch; selectedSchema.enableInteractiveSearch = selectedSchema.supportsSearch; diff --git a/frontend/src/Store/Actions/Settings/notifications.js b/frontend/src/Store/Actions/Settings/notifications.js index f41e031c3..5393ecbd0 100644 --- a/frontend/src/Store/Actions/Settings/notifications.js +++ b/frontend/src/Store/Actions/Settings/notifications.js @@ -102,6 +102,7 @@ export default { [SELECT_NOTIFICATION_SCHEMA]: (state, { payload }) => { return selectProviderSchema(state, section, payload, (selectedSchema) => { + selectedSchema.name = selectedSchema.implementationName; selectedSchema.onGrab = selectedSchema.supportsOnGrab; selectedSchema.onDownload = selectedSchema.supportsOnDownload; selectedSchema.onUpgrade = selectedSchema.supportsOnUpgrade; diff --git a/src/NzbDrone.Core/ImportLists/ImportListBase.cs b/src/NzbDrone.Core/ImportLists/ImportListBase.cs index ecbc59d74..a4c2e81f9 100644 --- a/src/NzbDrone.Core/ImportLists/ImportListBase.cs +++ b/src/NzbDrone.Core/ImportLists/ImportListBase.cs @@ -44,7 +44,6 @@ namespace NzbDrone.Core.ImportLists yield return new ImportListDefinition { - Name = GetType().Name, EnableAutomaticAdd = config.Validate().IsValid, Implementation = GetType().Name, Settings = config diff --git a/src/NzbDrone.Core/Localization/Core/en.json b/src/NzbDrone.Core/Localization/Core/en.json index 9cc739276..ff95889bc 100644 --- a/src/NzbDrone.Core/Localization/Core/en.json +++ b/src/NzbDrone.Core/Localization/Core/en.json @@ -11,19 +11,24 @@ "AddAutoTagError": "Unable to add a new auto tag, please try again.", "AddCondition": "Add Condition", "AddConditionError": "Unable to add a new condition, please try again.", + "AddConditionImplementation": "Add Condition - {implementationName}", "AddConnection": "Add Connection", + "AddConnectionImplementation": "Add Connection - {implementationName}", "AddCustomFilter": "Add Custom Filter", "AddCustomFormat": "Add Custom Format", "AddCustomFormatError": "Unable to add a new custom format, please try again.", "AddDelayProfile": "Add Delay Profile", "AddDownloadClient": "Add Download Client", "AddDownloadClientError": "Unable to add a new download client, please try again.", + "AddDownloadClientImplementation": "Add Download Client - {implementationName}", "AddExclusion": "Add Exclusion", "AddImportList": "Add Import List", "AddImportListExclusion": "Add Import List Exclusion", "AddImportListExclusionError": "Unable to add a new import list exclusion, please try again.", + "AddImportListImplementation": "Add Import List - {implementationName}", "AddIndexer": "Add Indexer", "AddIndexerError": "Unable to add a new indexer, please try again.", + "AddIndexerImplementation": "Add Indexer - {implementationName}", "AddList": "Add List", "AddListError": "Unable to add a new list, please try again.", "AddListExclusionError": "Unable to add a new list exclusion, please try again.", @@ -35,7 +40,6 @@ "AddNewSeriesRootFolderHelpText": "'{folder}' subfolder will be created automatically", "AddNewSeriesSearchForCutoffUnmetEpisodes": "Start search for cutoff unmet episodes", "AddNewSeriesSearchForMissingEpisodes": "Start search for missing episodes", - "AddNotification": "Add Notification", "AddNotificationError": "Unable to add a new notification, please try again.", "AddQualityProfile": "Add Quality Profile", "AddQualityProfileError": "Unable to add a new quality profile, please try again.", @@ -329,14 +333,15 @@ "Duration": "Duration", "Edit": "Edit", "EditAutoTag": "Edit Auto Tag", - "EditCondition": "Edit Condition", - "EditConnection": "Edit Connection", + "EditConditionImplementation": "Edit Condition - {implementationName}", + "EditConnectionImplementation": "Edit Connection - {implementationName}", "EditCustomFormat": "Edit Custom Format", "EditDelayProfile": "Edit Delay Profile", + "EditDownloadClientImplementation": "Edit Download Client - {implementationName}", "EditGroups": "Edit Groups", - "EditImportList": "Edit Import List", "EditImportListExclusion": "Edit Import List Exclusion", - "EditIndexer": "Edit Indexer", + "EditImportListImplementation": "Edit Import List - {implementationName}", + "EditIndexerImplementation": "Edit Indexer - {implementationName}", "EditListExclusion": "Edit List Exclusion", "EditMetadata": "Edit {metadataType} Metadata", "EditQualityProfile": "Edit Quality Profile",