From ab5b32138587305a8808638a985c4ba66a50b6d3 Mon Sep 17 00:00:00 2001 From: Bogdan Date: Sat, 8 Jul 2023 19:12:54 +0300 Subject: [PATCH] New: (UI) Add priority to Indexer Editor --- .../Form/AppProfileSelectInputConnector.js | 3 ++- .../src/Components/Form/FormInputGroup.js | 2 ++ .../Select/Edit/EditIndexerModalContent.tsx | 25 ++++++++++++++++++- .../Indexers/IndexerEditorController.cs | 5 ++++ .../Indexers/IndexerEditorResource.cs | 1 + 5 files changed, 34 insertions(+), 2 deletions(-) diff --git a/frontend/src/Components/Form/AppProfileSelectInputConnector.js b/frontend/src/Components/Form/AppProfileSelectInputConnector.js index fc40e9d3c..1aef10c30 100644 --- a/frontend/src/Components/Form/AppProfileSelectInputConnector.js +++ b/frontend/src/Components/Form/AppProfileSelectInputConnector.js @@ -5,6 +5,7 @@ import { connect } from 'react-redux'; import { createSelector } from 'reselect'; import createSortedSectionSelector from 'Store/Selectors/createSortedSectionSelector'; import sortByName from 'Utilities/Array/sortByName'; +import translate from 'Utilities/String/translate'; import SelectInput from './SelectInput'; function createMapStateToProps() { @@ -23,7 +24,7 @@ function createMapStateToProps() { if (includeNoChange) { values.unshift({ key: 'noChange', - value: 'No Change', + value: translate('NoChange'), disabled: true }); } diff --git a/frontend/src/Components/Form/FormInputGroup.js b/frontend/src/Components/Form/FormInputGroup.js index 9601be8de..bd0e9184d 100644 --- a/frontend/src/Components/Form/FormInputGroup.js +++ b/frontend/src/Components/Form/FormInputGroup.js @@ -262,6 +262,8 @@ FormInputGroup.propTypes = { values: PropTypes.arrayOf(PropTypes.any), type: PropTypes.string.isRequired, kind: PropTypes.oneOf(kinds.all), + min: PropTypes.number, + max: PropTypes.number, unit: PropTypes.string, buttons: PropTypes.oneOfType([PropTypes.node, PropTypes.arrayOf(PropTypes.node)]), helpText: PropTypes.string, diff --git a/frontend/src/Indexer/Index/Select/Edit/EditIndexerModalContent.tsx b/frontend/src/Indexer/Index/Select/Edit/EditIndexerModalContent.tsx index 4831aff06..7de97a964 100644 --- a/frontend/src/Indexer/Index/Select/Edit/EditIndexerModalContent.tsx +++ b/frontend/src/Indexer/Index/Select/Edit/EditIndexerModalContent.tsx @@ -14,6 +14,7 @@ import styles from './EditIndexerModalContent.css'; interface SavePayload { enable?: boolean; appProfileId?: number; + priority?: number; } interface EditIndexerModalContentProps { @@ -35,6 +36,7 @@ function EditIndexerModalContent(props: EditIndexerModalContentProps) { const [enable, setEnable] = useState(NO_CHANGE); const [appProfileId, setAppProfileId] = useState(NO_CHANGE); + const [priority, setPriority] = useState(null); const save = useCallback(() => { let hasChanges = false; @@ -50,12 +52,17 @@ function EditIndexerModalContent(props: EditIndexerModalContentProps) { payload.appProfileId = appProfileId as number; } + if (priority !== null) { + hasChanges = true; + payload.priority = priority as number; + } + if (hasChanges) { onSavePress(payload); } onModalClose(); - }, [enable, appProfileId, onSavePress, onModalClose]); + }, [enable, appProfileId, priority, onSavePress, onModalClose]); const onInputChange = useCallback( ({ name, value }) => { @@ -66,6 +73,9 @@ function EditIndexerModalContent(props: EditIndexerModalContentProps) { case 'appProfileId': setAppProfileId(value); break; + case 'priority': + setPriority(value); + break; default: console.warn(`EditIndexersModalContent Unknown Input: '${name}'`); } @@ -108,6 +118,19 @@ function EditIndexerModalContent(props: EditIndexerModalContentProps) { onChange={onInputChange} /> + + + {translate('Priority')} + + + diff --git a/src/Prowlarr.Api.V1/Indexers/IndexerEditorController.cs b/src/Prowlarr.Api.V1/Indexers/IndexerEditorController.cs index cb60d36f4..9f7fda2ae 100644 --- a/src/Prowlarr.Api.V1/Indexers/IndexerEditorController.cs +++ b/src/Prowlarr.Api.V1/Indexers/IndexerEditorController.cs @@ -39,6 +39,11 @@ namespace Prowlarr.Api.V1.Indexers indexer.AppProfileId = resource.AppProfileId.Value; } + if (resource.Priority.HasValue) + { + indexer.Priority = resource.Priority.Value; + } + if (resource.Tags != null) { var newTags = resource.Tags; diff --git a/src/Prowlarr.Api.V1/Indexers/IndexerEditorResource.cs b/src/Prowlarr.Api.V1/Indexers/IndexerEditorResource.cs index ab5cb0a7c..2e70686ee 100644 --- a/src/Prowlarr.Api.V1/Indexers/IndexerEditorResource.cs +++ b/src/Prowlarr.Api.V1/Indexers/IndexerEditorResource.cs @@ -7,6 +7,7 @@ namespace Prowlarr.Api.V1.Indexers public List IndexerIds { get; set; } public bool? Enable { get; set; } public int? AppProfileId { get; set; } + public int? Priority { get; set; } public List Tags { get; set; } public ApplyTags ApplyTags { get; set; } }