mirror of
https://github.com/Prowlarr/Prowlarr.git
synced 2025-09-17 17:14:18 +02:00
New: (UI) Add priority to Indexer Editor
This commit is contained in:
@@ -5,6 +5,7 @@ import { connect } from 'react-redux';
|
|||||||
import { createSelector } from 'reselect';
|
import { createSelector } from 'reselect';
|
||||||
import createSortedSectionSelector from 'Store/Selectors/createSortedSectionSelector';
|
import createSortedSectionSelector from 'Store/Selectors/createSortedSectionSelector';
|
||||||
import sortByName from 'Utilities/Array/sortByName';
|
import sortByName from 'Utilities/Array/sortByName';
|
||||||
|
import translate from 'Utilities/String/translate';
|
||||||
import SelectInput from './SelectInput';
|
import SelectInput from './SelectInput';
|
||||||
|
|
||||||
function createMapStateToProps() {
|
function createMapStateToProps() {
|
||||||
@@ -23,7 +24,7 @@ function createMapStateToProps() {
|
|||||||
if (includeNoChange) {
|
if (includeNoChange) {
|
||||||
values.unshift({
|
values.unshift({
|
||||||
key: 'noChange',
|
key: 'noChange',
|
||||||
value: 'No Change',
|
value: translate('NoChange'),
|
||||||
disabled: true
|
disabled: true
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@@ -262,6 +262,8 @@ FormInputGroup.propTypes = {
|
|||||||
values: PropTypes.arrayOf(PropTypes.any),
|
values: PropTypes.arrayOf(PropTypes.any),
|
||||||
type: PropTypes.string.isRequired,
|
type: PropTypes.string.isRequired,
|
||||||
kind: PropTypes.oneOf(kinds.all),
|
kind: PropTypes.oneOf(kinds.all),
|
||||||
|
min: PropTypes.number,
|
||||||
|
max: PropTypes.number,
|
||||||
unit: PropTypes.string,
|
unit: PropTypes.string,
|
||||||
buttons: PropTypes.oneOfType([PropTypes.node, PropTypes.arrayOf(PropTypes.node)]),
|
buttons: PropTypes.oneOfType([PropTypes.node, PropTypes.arrayOf(PropTypes.node)]),
|
||||||
helpText: PropTypes.string,
|
helpText: PropTypes.string,
|
||||||
|
@@ -14,6 +14,7 @@ import styles from './EditIndexerModalContent.css';
|
|||||||
interface SavePayload {
|
interface SavePayload {
|
||||||
enable?: boolean;
|
enable?: boolean;
|
||||||
appProfileId?: number;
|
appProfileId?: number;
|
||||||
|
priority?: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface EditIndexerModalContentProps {
|
interface EditIndexerModalContentProps {
|
||||||
@@ -35,6 +36,7 @@ function EditIndexerModalContent(props: EditIndexerModalContentProps) {
|
|||||||
|
|
||||||
const [enable, setEnable] = useState(NO_CHANGE);
|
const [enable, setEnable] = useState(NO_CHANGE);
|
||||||
const [appProfileId, setAppProfileId] = useState<string | number>(NO_CHANGE);
|
const [appProfileId, setAppProfileId] = useState<string | number>(NO_CHANGE);
|
||||||
|
const [priority, setPriority] = useState<null | string | number>(null);
|
||||||
|
|
||||||
const save = useCallback(() => {
|
const save = useCallback(() => {
|
||||||
let hasChanges = false;
|
let hasChanges = false;
|
||||||
@@ -50,12 +52,17 @@ function EditIndexerModalContent(props: EditIndexerModalContentProps) {
|
|||||||
payload.appProfileId = appProfileId as number;
|
payload.appProfileId = appProfileId as number;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (priority !== null) {
|
||||||
|
hasChanges = true;
|
||||||
|
payload.priority = priority as number;
|
||||||
|
}
|
||||||
|
|
||||||
if (hasChanges) {
|
if (hasChanges) {
|
||||||
onSavePress(payload);
|
onSavePress(payload);
|
||||||
}
|
}
|
||||||
|
|
||||||
onModalClose();
|
onModalClose();
|
||||||
}, [enable, appProfileId, onSavePress, onModalClose]);
|
}, [enable, appProfileId, priority, onSavePress, onModalClose]);
|
||||||
|
|
||||||
const onInputChange = useCallback(
|
const onInputChange = useCallback(
|
||||||
({ name, value }) => {
|
({ name, value }) => {
|
||||||
@@ -66,6 +73,9 @@ function EditIndexerModalContent(props: EditIndexerModalContentProps) {
|
|||||||
case 'appProfileId':
|
case 'appProfileId':
|
||||||
setAppProfileId(value);
|
setAppProfileId(value);
|
||||||
break;
|
break;
|
||||||
|
case 'priority':
|
||||||
|
setPriority(value);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
console.warn(`EditIndexersModalContent Unknown Input: '${name}'`);
|
console.warn(`EditIndexersModalContent Unknown Input: '${name}'`);
|
||||||
}
|
}
|
||||||
@@ -108,6 +118,19 @@ function EditIndexerModalContent(props: EditIndexerModalContentProps) {
|
|||||||
onChange={onInputChange}
|
onChange={onInputChange}
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
|
|
||||||
|
<FormGroup>
|
||||||
|
<FormLabel>{translate('Priority')}</FormLabel>
|
||||||
|
|
||||||
|
<FormInputGroup
|
||||||
|
type={inputTypes.NUMBER}
|
||||||
|
name="priority"
|
||||||
|
value={priority}
|
||||||
|
min={1}
|
||||||
|
max={50}
|
||||||
|
onChange={onInputChange}
|
||||||
|
/>
|
||||||
|
</FormGroup>
|
||||||
</ModalBody>
|
</ModalBody>
|
||||||
|
|
||||||
<ModalFooter className={styles.modalFooter}>
|
<ModalFooter className={styles.modalFooter}>
|
||||||
|
@@ -39,6 +39,11 @@ namespace Prowlarr.Api.V1.Indexers
|
|||||||
indexer.AppProfileId = resource.AppProfileId.Value;
|
indexer.AppProfileId = resource.AppProfileId.Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (resource.Priority.HasValue)
|
||||||
|
{
|
||||||
|
indexer.Priority = resource.Priority.Value;
|
||||||
|
}
|
||||||
|
|
||||||
if (resource.Tags != null)
|
if (resource.Tags != null)
|
||||||
{
|
{
|
||||||
var newTags = resource.Tags;
|
var newTags = resource.Tags;
|
||||||
|
@@ -7,6 +7,7 @@ namespace Prowlarr.Api.V1.Indexers
|
|||||||
public List<int> IndexerIds { get; set; }
|
public List<int> IndexerIds { get; set; }
|
||||||
public bool? Enable { get; set; }
|
public bool? Enable { get; set; }
|
||||||
public int? AppProfileId { get; set; }
|
public int? AppProfileId { get; set; }
|
||||||
|
public int? Priority { get; set; }
|
||||||
public List<int> Tags { get; set; }
|
public List<int> Tags { get; set; }
|
||||||
public ApplyTags ApplyTags { get; set; }
|
public ApplyTags ApplyTags { get; set; }
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user