From 50465fd482e6650c6159fd59d69bd554cfdc7ec1 Mon Sep 17 00:00:00 2001 From: Bogdan Date: Thu, 9 Nov 2023 14:16:03 +0200 Subject: [PATCH] New: Add enabled to manage import lists bulk --- .../ManageImportListsEditModalContent.tsx | 35 +++++++++++++++++-- .../Manage/ManageImportListsModalContent.tsx | 6 ++++ .../Manage/ManageImportListsModalRow.css | 3 +- .../Manage/ManageImportListsModalRow.css.d.ts | 1 + .../Manage/ManageImportListsModalRow.tsx | 11 ++++-- frontend/src/typings/ImportList.ts | 1 + .../ImportLists/ImportListBulkResource.cs | 2 ++ 7 files changed, 53 insertions(+), 6 deletions(-) diff --git a/frontend/src/Settings/ImportLists/ImportLists/Manage/Edit/ManageImportListsEditModalContent.tsx b/frontend/src/Settings/ImportLists/ImportLists/Manage/Edit/ManageImportListsEditModalContent.tsx index a9e9caebb..417cfb781 100644 --- a/frontend/src/Settings/ImportLists/ImportLists/Manage/Edit/ManageImportListsEditModalContent.tsx +++ b/frontend/src/Settings/ImportLists/ImportLists/Manage/Edit/ManageImportListsEditModalContent.tsx @@ -12,6 +12,7 @@ import translate from 'Utilities/String/translate'; import styles from './ManageImportListsEditModalContent.css'; interface SavePayload { + enabled?: boolean; enableAuto?: boolean; qualityProfileId?: number; rootFolderPath?: string; @@ -25,7 +26,7 @@ interface ManageImportListsEditModalContentProps { const NO_CHANGE = 'noChange'; -const autoAddOptions = [ +const enableOptions = [ { key: NO_CHANGE, get value() { @@ -52,6 +53,7 @@ function ManageImportListsEditModalContent( ) { const { importListIds, onSavePress, onModalClose } = props; + const [enabled, setEnabled] = useState(NO_CHANGE); const [enableAuto, setEnableAuto] = useState(NO_CHANGE); const [qualityProfileId, setQualityProfileId] = useState( NO_CHANGE @@ -62,6 +64,11 @@ function ManageImportListsEditModalContent( let hasChanges = false; const payload: SavePayload = {}; + if (enabled !== NO_CHANGE) { + hasChanges = true; + payload.enabled = enabled === 'enabled'; + } + if (enableAuto !== NO_CHANGE) { hasChanges = true; payload.enableAuto = enableAuto === 'enabled'; @@ -82,11 +89,21 @@ function ManageImportListsEditModalContent( } onModalClose(); - }, [enableAuto, qualityProfileId, rootFolderPath, onSavePress, onModalClose]); + }, [ + enabled, + enableAuto, + qualityProfileId, + rootFolderPath, + onSavePress, + onModalClose, + ]); const onInputChange = useCallback( ({ name, value }: { name: string; value: string }) => { switch (name) { + case 'enabled': + setEnabled(value); + break; case 'enableAuto': setEnableAuto(value); break; @@ -110,6 +127,18 @@ function ManageImportListsEditModalContent( {translate('EditSelectedImportLists')} + + {translate('Enabled')} + + + + {translate('AutomaticAdd')} @@ -117,7 +146,7 @@ function ManageImportListsEditModalContent( type={inputTypes.SELECT} name="enableAuto" value={enableAuto} - values={autoAddOptions} + values={enableOptions} onChange={onInputChange} /> diff --git a/frontend/src/Settings/ImportLists/ImportLists/Manage/ManageImportListsModalContent.tsx b/frontend/src/Settings/ImportLists/ImportLists/Manage/ManageImportListsModalContent.tsx index e2b45e96f..377117768 100644 --- a/frontend/src/Settings/ImportLists/ImportLists/Manage/ManageImportListsModalContent.tsx +++ b/frontend/src/Settings/ImportLists/ImportLists/Manage/ManageImportListsModalContent.tsx @@ -58,6 +58,12 @@ const COLUMNS = [ isSortable: true, isVisible: true, }, + { + name: 'enabled', + label: () => translate('Enabled'), + isSortable: true, + isVisible: true, + }, { name: 'enableAuto', label: () => translate('AutomaticAdd'), diff --git a/frontend/src/Settings/ImportLists/ImportLists/Manage/ManageImportListsModalRow.css b/frontend/src/Settings/ImportLists/ImportLists/Manage/ManageImportListsModalRow.css index 0246a0f93..3c0c27415 100644 --- a/frontend/src/Settings/ImportLists/ImportLists/Manage/ManageImportListsModalRow.css +++ b/frontend/src/Settings/ImportLists/ImportLists/Manage/ManageImportListsModalRow.css @@ -1,5 +1,6 @@ .name, .tags, +.enabled, .enableAuto, .qualityProfileId, .rootFolderPath, @@ -7,4 +8,4 @@ composes: cell from '~Components/Table/Cells/TableRowCell.css'; word-break: break-all; -} \ No newline at end of file +} diff --git a/frontend/src/Settings/ImportLists/ImportLists/Manage/ManageImportListsModalRow.css.d.ts b/frontend/src/Settings/ImportLists/ImportLists/Manage/ManageImportListsModalRow.css.d.ts index 874317cc3..e0766c1c1 100644 --- a/frontend/src/Settings/ImportLists/ImportLists/Manage/ManageImportListsModalRow.css.d.ts +++ b/frontend/src/Settings/ImportLists/ImportLists/Manage/ManageImportListsModalRow.css.d.ts @@ -2,6 +2,7 @@ // Please do not change this file! interface CssExports { 'enableAuto': string; + 'enabled': string; 'implementation': string; 'name': string; 'qualityProfileId': string; diff --git a/frontend/src/Settings/ImportLists/ImportLists/Manage/ManageImportListsModalRow.tsx b/frontend/src/Settings/ImportLists/ImportLists/Manage/ManageImportListsModalRow.tsx index 6620bdf85..ac0729283 100644 --- a/frontend/src/Settings/ImportLists/ImportLists/Manage/ManageImportListsModalRow.tsx +++ b/frontend/src/Settings/ImportLists/ImportLists/Manage/ManageImportListsModalRow.tsx @@ -7,6 +7,7 @@ import TableRow from 'Components/Table/TableRow'; import TagListConnector from 'Components/TagListConnector'; import { createQualityProfileSelectorForHook } from 'Store/Selectors/createQualityProfileSelector'; import { SelectStateInputProps } from 'typings/props'; +import translate from 'Utilities/String/translate'; import styles from './ManageImportListsModalRow.css'; interface ManageImportListsModalRowProps { @@ -16,6 +17,7 @@ interface ManageImportListsModalRowProps { qualityProfileId: number; implementation: string; tags: number[]; + enabled: boolean; enableAuto: boolean; columns: Column[]; isSelected?: boolean; @@ -30,6 +32,7 @@ function ManageImportListsModalRow(props: ManageImportListsModalRowProps) { rootFolderPath, qualityProfileId, implementation, + enabled, enableAuto, tags, onSelectedChange, @@ -63,15 +66,19 @@ function ManageImportListsModalRow(props: ManageImportListsModalRowProps) { - {qualityProfile?.name ?? 'None'} + {qualityProfile?.name ?? translate('None')} {rootFolderPath} + + {enabled ? translate('Yes') : translate('No')} + + - {enableAuto ? 'Yes' : 'No'} + {enableAuto ? translate('Yes') : translate('No')} diff --git a/frontend/src/typings/ImportList.ts b/frontend/src/typings/ImportList.ts index f2e06cf58..3a53de8bc 100644 --- a/frontend/src/typings/ImportList.ts +++ b/frontend/src/typings/ImportList.ts @@ -12,6 +12,7 @@ export interface Field { interface ImportList extends ModelBase { enable: boolean; + enabled: boolean; enableAuto: boolean; qualityProfileId: number; rootFolderPath: string; diff --git a/src/Radarr.Api.V3/ImportLists/ImportListBulkResource.cs b/src/Radarr.Api.V3/ImportLists/ImportListBulkResource.cs index 858790a66..e13a1e385 100644 --- a/src/Radarr.Api.V3/ImportLists/ImportListBulkResource.cs +++ b/src/Radarr.Api.V3/ImportLists/ImportListBulkResource.cs @@ -5,6 +5,7 @@ namespace Radarr.Api.V3.ImportLists { public class ImportListBulkResource : ProviderBulkResource { + public bool? Enabled { get; set; } public bool? EnableAuto { get; set; } public string RootFolderPath { get; set; } public int? QualityProfileId { get; set; } @@ -21,6 +22,7 @@ namespace Radarr.Api.V3.ImportLists existingDefinitions.ForEach(existing => { + existing.Enabled = resource.Enabled ?? existing.Enabled; existing.EnableAuto = resource.EnableAuto ?? existing.EnableAuto; existing.RootFolderPath = resource.RootFolderPath ?? existing.RootFolderPath; existing.QualityProfileId = resource.QualityProfileId ?? existing.QualityProfileId;