From c88d64a9acb6dc66fb6ebf15c2351f29665ab72c Mon Sep 17 00:00:00 2001 From: Bogdan Date: Mon, 14 Aug 2023 02:27:59 +0300 Subject: [PATCH] New: Default name when adding providers (cherry picked from commit 16d95ea6bf3d9340845fee19904a2d48616be8dc) Closes #4007 --- .../EditSpecificationModalContent.js | 2 +- .../EditDownloadClientModalContent.js | 2 +- .../ImportLists/AddImportListItem.js | 12 +++++++++--- .../ImportLists/AddImportListModalContent.js | 2 +- .../AddImportListModalContentConnector.js | 4 ++-- .../ImportLists/AddImportListPresetMenuItem.js | 12 ++++++++++-- .../ImportLists/EditImportListModalContent.js | 3 ++- .../Indexers/Indexers/AddIndexerItem.js | 6 ++++-- .../Indexers/AddIndexerModalContentConnector.js | 4 ++-- .../Indexers/AddIndexerPresetMenuItem.js | 8 ++++++-- .../Indexers/EditIndexerModalContent.js | 2 +- .../AddNotificationModalContent.js | 2 +- .../EditNotificationModalContent.js | 2 +- .../Store/Actions/Settings/downloadClients.js | 1 + .../src/Store/Actions/Settings/importLists.js | 4 ++++ frontend/src/Store/Actions/Settings/indexers.js | 2 ++ .../src/Store/Actions/Settings/notifications.js | 1 + src/NzbDrone.Core/ImportLists/ImportListBase.cs | 1 - src/NzbDrone.Core/Localization/Core/en.json | 17 ++++++++++++----- 19 files changed, 61 insertions(+), 26 deletions(-) diff --git a/frontend/src/Settings/CustomFormats/CustomFormats/Specifications/EditSpecificationModalContent.js b/frontend/src/Settings/CustomFormats/CustomFormats/Specifications/EditSpecificationModalContent.js index 67e42a27e9..d55bbcdf95 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 ? 'Edit' : 'Add'} Condition - ${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 eb020199e6..7e43dea12c 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 ? 'Edit' : 'Add'} Download Client - ${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 40a10f6571..9d4d4034f2 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/AddImportListModalContent.js b/frontend/src/Settings/ImportLists/ImportLists/AddImportListModalContent.js index 8fcad06f30..abf6205f06 100644 --- a/frontend/src/Settings/ImportLists/ImportLists/AddImportListModalContent.js +++ b/frontend/src/Settings/ImportLists/ImportLists/AddImportListModalContent.js @@ -32,7 +32,7 @@ class AddImportListModalContent extends Component { return ( - Add List + {translate('AddImportList')} diff --git a/frontend/src/Settings/ImportLists/ImportLists/AddImportListModalContentConnector.js b/frontend/src/Settings/ImportLists/ImportLists/AddImportListModalContentConnector.js index aa918f0051..99e1fbead6 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 9ba037da46..31d16db290 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 b3f1a027f2..b6aef00b09 100644 --- a/frontend/src/Settings/ImportLists/ImportLists/EditImportListModalContent.js +++ b/frontend/src/Settings/ImportLists/ImportLists/EditImportListModalContent.js @@ -73,6 +73,7 @@ function EditImportListModalContent(props) { const { id, + implementationName, name, enableAutomaticAdd, minRefreshInterval, @@ -91,7 +92,7 @@ function EditImportListModalContent(props) { return ( - {id ? translate('EditList') : translate('AddList')} + {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 58b7ce50db..5874b4faca 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 11861e9c20..a9c3134793 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 03196e5261..8f98d0e122 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 0dedc8f766..55235c9dad 100644 --- a/frontend/src/Settings/Indexers/Indexers/EditIndexerModalContent.js +++ b/frontend/src/Settings/Indexers/Indexers/EditIndexerModalContent.js @@ -55,7 +55,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 a8c5199854..705ae58e4d 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 ( - Add Notification + {translate('AddConnection')} diff --git a/frontend/src/Settings/Notifications/Notifications/EditNotificationModalContent.js b/frontend/src/Settings/Notifications/Notifications/EditNotificationModalContent.js index cc3977661f..cf42e4c2ae 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/Store/Actions/Settings/downloadClients.js b/frontend/src/Store/Actions/Settings/downloadClients.js index d16dbd1e90..12651039db 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 3bed05b447..fcd6877c4d 100644 --- a/frontend/src/Store/Actions/Settings/importLists.js +++ b/frontend/src/Store/Actions/Settings/importLists.js @@ -117,8 +117,12 @@ 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 = 'entireArtist'; + selectedSchema.rootFolderPath = ''; return selectedSchema; }); diff --git a/frontend/src/Store/Actions/Settings/indexers.js b/frontend/src/Store/Actions/Settings/indexers.js index f4be096910..c76750cf20 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 b6a38022de..15943255cb 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.onReleaseImport = selectedSchema.supportsOnReleaseImport; selectedSchema.onUpgrade = selectedSchema.supportsOnUpgrade; diff --git a/src/NzbDrone.Core/ImportLists/ImportListBase.cs b/src/NzbDrone.Core/ImportLists/ImportListBase.cs index 268690b13a..044d546c11 100644 --- a/src/NzbDrone.Core/ImportLists/ImportListBase.cs +++ b/src/NzbDrone.Core/ImportLists/ImportListBase.cs @@ -44,7 +44,6 @@ public virtual IEnumerable DefaultDefinitions 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 cca36077ca..0333c9bf31 100644 --- a/src/NzbDrone.Core/Localization/Core/en.json +++ b/src/NzbDrone.Core/Localization/Core/en.json @@ -8,13 +8,18 @@ "Actions": "Actions", "Activity": "Activity", "Add": "Add", + "AddConditionImplementation": "Add Condition - {implementationName}", "AddConnection": "Add Connection", + "AddConnectionImplementation": "Add Connection - {implementationName}", "AddDelayProfile": "Add Delay Profile", + "AddDownloadClientImplementation": "Add Download Client - {implementationName}", + "AddImportList": "Add Import List", "AddImportListExclusion": "Add Import List Exclusion", "AddImportListExclusionAlbumHelpText": "Prevent album from being added to Lidarr by Import lists", "AddImportListExclusionArtistHelpText": "Prevent artist from being added to Lidarr by Import lists", + "AddImportListImplementation": "Add Import List - {implementationName}", "AddIndexer": "Add Indexer", - "AddList": "Add List", + "AddIndexerImplementation": "Add Indexer - {implementationName}", "AddListExclusion": "Add List Exclusion", "AddMetadataProfile": "Add Metadata Profile", "AddMissing": "Add missing", @@ -155,7 +160,7 @@ "CombineWithExistingFiles": "Combine With Existing Files", "CompletedDownloadHandling": "Completed Download Handling", "Component": "Component", - "Conditions": "'Conditions'", + "Conditions": "Conditions", "Connect": "Connect", "ConnectSettings": "Connect Settings", "ConnectionLost": "Connection Lost", @@ -295,12 +300,14 @@ "Duration": "Duration", "Edit": "Edit", "EditArtist": "Edit Artist", - "EditConnection": "Edit Connection", + "EditConditionImplementation": "Edit Condition - {implementationName}", + "EditConnectionImplementation": "Edit Connection - {implementationName}", "EditDelayProfile": "Edit Delay Profile", + "EditDownloadClientImplementation": "Edit Download Client - {implementationName}", "EditGroups": "Edit Groups", "EditImportListExclusion": "Edit Import List Exclusion", - "EditIndexer": "Edit Indexer", - "EditList": "Edit List", + "EditImportListImplementation": "Edit Import List - {implementationName}", + "EditIndexerImplementation": "Edit Indexer - {implementationName}", "EditMetadata": "Edit Metadata", "EditMetadataProfile": "Edit Metadata Profile", "EditQualityProfile": "Edit Quality Profile",