New: Minimum Availability in bulk manage import lists

Fixes #9461
pull/9463/head
Bogdan 6 months ago
parent ced624c2ff
commit a059a700eb

@ -15,6 +15,7 @@ interface SavePayload {
enabled?: boolean;
enableAuto?: boolean;
qualityProfileId?: number;
minimumAvailability?: string;
rootFolderPath?: string;
}
@ -58,6 +59,7 @@ function ManageImportListsEditModalContent(
const [qualityProfileId, setQualityProfileId] = useState<string | number>(
NO_CHANGE
);
const [minimumAvailability, setMinimumAvailability] = useState(NO_CHANGE);
const [rootFolderPath, setRootFolderPath] = useState(NO_CHANGE);
const save = useCallback(() => {
@ -79,6 +81,11 @@ function ManageImportListsEditModalContent(
payload.qualityProfileId = qualityProfileId as number;
}
if (minimumAvailability !== NO_CHANGE) {
hasChanges = true;
payload.minimumAvailability = minimumAvailability as string;
}
if (rootFolderPath !== NO_CHANGE) {
hasChanges = true;
payload.rootFolderPath = rootFolderPath;
@ -93,6 +100,7 @@ function ManageImportListsEditModalContent(
enabled,
enableAuto,
qualityProfileId,
minimumAvailability,
rootFolderPath,
onSavePress,
onModalClose,
@ -110,6 +118,9 @@ function ManageImportListsEditModalContent(
case 'qualityProfileId':
setQualityProfileId(value);
break;
case 'minimumAvailability':
setMinimumAvailability(value);
break;
case 'rootFolderPath':
setRootFolderPath(value);
break;
@ -164,6 +175,19 @@ function ManageImportListsEditModalContent(
/>
</FormGroup>
<FormGroup>
<FormLabel>{translate('MinimumAvailability')}</FormLabel>
<FormInputGroup
type={inputTypes.AVAILABILITY_SELECT}
name="minimumAvailability"
value={minimumAvailability}
includeNoChange={true}
includeNoChangeDisabled={false}
onChange={onInputChange}
/>
</FormGroup>
<FormGroup>
<FormLabel>{translate('RootFolder')}</FormLabel>

@ -1,5 +1,6 @@
import React from 'react';
import Modal from 'Components/Modal/Modal';
import { sizes } from 'Helpers/Props';
import ManageImportListsModalContent from './ManageImportListsModalContent';
interface ManageImportListsModalProps {
@ -11,7 +12,7 @@ function ManageImportListsModal(props: ManageImportListsModalProps) {
const { isOpen, onModalClose } = props;
return (
<Modal isOpen={isOpen} onModalClose={onModalClose}>
<Modal isOpen={isOpen} size={sizes.EXTRA_LARGE} onModalClose={onModalClose}>
<ManageImportListsModalContent onModalClose={onModalClose} />
</Modal>
);

@ -52,6 +52,12 @@ const COLUMNS = [
isSortable: true,
isVisible: true,
},
{
name: 'minimumAvailability',
label: () => translate('MinimumAvailability'),
isSortable: true,
isVisible: true,
},
{
name: 'rootFolderPath',
label: () => translate('RootFolder'),

@ -2,6 +2,7 @@
.tags,
.enabled,
.enableAuto,
.minimumAvailability,
.qualityProfileId,
.rootFolderPath,
.implementation {

@ -4,6 +4,7 @@ interface CssExports {
'enableAuto': string;
'enabled': string;
'implementation': string;
'minimumAvailability': string;
'name': string;
'qualityProfileId': string;
'rootFolderPath': string;

@ -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 firstCharToUpper from 'Utilities/String/firstCharToUpper';
import translate from 'Utilities/String/translate';
import styles from './ManageImportListsModalRow.css';
@ -15,6 +16,7 @@ interface ManageImportListsModalRowProps {
name: string;
rootFolderPath: string;
qualityProfileId: number;
minimumAvailability: string;
implementation: string;
tags: number[];
enabled: boolean;
@ -30,6 +32,7 @@ function ManageImportListsModalRow(props: ManageImportListsModalRowProps) {
isSelected,
name,
rootFolderPath,
minimumAvailability,
qualityProfileId,
implementation,
enabled,
@ -69,6 +72,10 @@ function ManageImportListsModalRow(props: ManageImportListsModalRowProps) {
{qualityProfile?.name ?? translate('None')}
</TableRowCell>
<TableRowCell className={styles.minimumAvailability}>
{translate(firstCharToUpper(minimumAvailability))}
</TableRowCell>
<TableRowCell className={styles.rootFolderPath}>
{rootFolderPath}
</TableRowCell>

@ -15,6 +15,7 @@ interface ImportList extends ModelBase {
enabled: boolean;
enableAuto: boolean;
qualityProfileId: number;
minimumAvailability: string;
rootFolderPath: string;
name: string;
fields: Field[];

@ -1,5 +1,6 @@
using System.Collections.Generic;
using NzbDrone.Core.ImportLists;
using NzbDrone.Core.Movies;
namespace Radarr.Api.V3.ImportLists
{
@ -9,6 +10,7 @@ namespace Radarr.Api.V3.ImportLists
public bool? EnableAuto { get; set; }
public string RootFolderPath { get; set; }
public int? QualityProfileId { get; set; }
public MovieStatusType? MinimumAvailability { get; set; }
}
public class ImportListBulkResourceMapper : ProviderBulkResourceMapper<ImportListBulkResource, ImportListDefinition>
@ -26,6 +28,7 @@ namespace Radarr.Api.V3.ImportLists
existing.EnableAuto = resource.EnableAuto ?? existing.EnableAuto;
existing.RootFolderPath = resource.RootFolderPath ?? existing.RootFolderPath;
existing.QualityProfileId = resource.QualityProfileId ?? existing.QualityProfileId;
existing.MinimumAvailability = resource.MinimumAvailability ?? existing.MinimumAvailability;
});
return existingDefinitions;

Loading…
Cancel
Save