import React, { useCallback, useState } from 'react'; import FormGroup from 'Components/Form/FormGroup'; import FormInputGroup from 'Components/Form/FormInputGroup'; import FormLabel from 'Components/Form/FormLabel'; import Button from 'Components/Link/Button'; import ModalBody from 'Components/Modal/ModalBody'; import ModalContent from 'Components/Modal/ModalContent'; import ModalFooter from 'Components/Modal/ModalFooter'; import ModalHeader from 'Components/Modal/ModalHeader'; import { inputTypes } from 'Helpers/Props'; import MoveSeriesModal from 'Series/MoveSeries/MoveSeriesModal'; import translate from 'Utilities/String/translate'; import styles from './EditSeriesModalContent.css'; interface SavePayload { monitored?: boolean; qualityProfileId?: number; seriesType?: string; seasonFolder?: boolean; rootFolderPath?: string; moveFiles?: boolean; } interface EditSeriesModalContentProps { seriesIds: number[]; onSavePress(payload: object): void; onModalClose(): void; } const NO_CHANGE = 'noChange'; const monitoredOptions = [ { key: NO_CHANGE, value: 'No Change', disabled: true }, { key: 'monitored', value: 'Monitored' }, { key: 'unmonitored', value: 'Unmonitored' }, ]; const seasonFolderOptions = [ { key: NO_CHANGE, value: 'No Change', disabled: true }, { key: 'yes', value: 'Yes' }, { key: 'no', value: 'No' }, ]; function EditSeriesModalContent(props: EditSeriesModalContentProps) { const { seriesIds, onSavePress, onModalClose } = props; const [monitored, setMonitored] = useState(NO_CHANGE); const [qualityProfileId, setQualityProfileId] = useState( NO_CHANGE ); const [seriesType, setSeriesType] = useState(NO_CHANGE); const [seasonFolder, setSeasonFolder] = useState(NO_CHANGE); const [rootFolderPath, setRootFolderPath] = useState(NO_CHANGE); const [isConfirmMoveModalOpen, setIsConfirmMoveModalOpen] = useState(false); const save = useCallback( (moveFiles: boolean) => { let hasChanges = false; const payload: SavePayload = {}; if (monitored !== NO_CHANGE) { hasChanges = true; payload.monitored = monitored === 'monitored'; } if (qualityProfileId !== NO_CHANGE) { hasChanges = true; payload.qualityProfileId = qualityProfileId as number; } if (seriesType !== NO_CHANGE) { hasChanges = true; payload.seriesType = seriesType; } if (seasonFolder !== NO_CHANGE) { hasChanges = true; payload.seasonFolder = seasonFolder === 'yes'; } if (rootFolderPath !== NO_CHANGE) { hasChanges = true; payload.rootFolderPath = rootFolderPath; payload.moveFiles = moveFiles; } if (hasChanges) { onSavePress(payload); } onModalClose(); }, [ monitored, qualityProfileId, seriesType, seasonFolder, rootFolderPath, onSavePress, onModalClose, ] ); const onInputChange = useCallback( ({ name, value }: { name: string; value: string }) => { switch (name) { case 'monitored': setMonitored(value); break; case 'qualityProfileId': setQualityProfileId(value); break; case 'seriesType': setSeriesType(value); break; case 'seasonFolder': setSeasonFolder(value); break; case 'rootFolderPath': setRootFolderPath(value); break; default: console.warn('EditSeriesModalContent Unknown Input'); } }, [setMonitored] ); const onSavePressWrapper = useCallback(() => { if (rootFolderPath === NO_CHANGE) { save(false); } else { setIsConfirmMoveModalOpen(true); } }, [rootFolderPath, save]); const onCancelPress = useCallback(() => { setIsConfirmMoveModalOpen(false); }, [setIsConfirmMoveModalOpen]); const onDoNotMoveSeriesPress = useCallback(() => { setIsConfirmMoveModalOpen(false); save(false); }, [setIsConfirmMoveModalOpen, save]); const onMoveSeriesPress = useCallback(() => { setIsConfirmMoveModalOpen(false); save(true); }, [setIsConfirmMoveModalOpen, save]); const selectedCount = seriesIds.length; return ( {translate('Edit Selected Series')} {translate('Monitored')} {translate('Quality Profile')} {translate('Series Type')} {translate('Season Folder')} {translate('Root Folder')}
{translate('{count} series selected', { count: selectedCount })}
); } export default EditSeriesModalContent;