import React, { useCallback, useState } from 'react'; import { useDispatch, useSelector } from 'react-redux'; import AppState from 'App/State/AppState'; import FormGroup from 'Components/Form/FormGroup'; import FormInputGroup from 'Components/Form/FormInputGroup'; import FormLabel from 'Components/Form/FormLabel'; import Icon from 'Components/Icon'; import Button from 'Components/Link/Button'; import InlineMarkdown from 'Components/Markdown/InlineMarkdown'; 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 { icons, inputTypes, kinds } from 'Helpers/Props'; import { Statistics } from 'Series/Series'; import useSeries from 'Series/useSeries'; import { deleteSeries, setDeleteOption } from 'Store/Actions/seriesActions'; import { CheckInputChanged } from 'typings/inputs'; import formatBytes from 'Utilities/Number/formatBytes'; import translate from 'Utilities/String/translate'; import styles from './DeleteSeriesModalContent.css'; export interface DeleteSeriesModalContentProps { seriesId: number; onModalClose: () => void; } function DeleteSeriesModalContent({ seriesId, onModalClose, }: DeleteSeriesModalContentProps) { const dispatch = useDispatch(); const { title, path, statistics = {} as Statistics } = useSeries(seriesId)!; const { addImportListExclusion } = useSelector( (state: AppState) => state.series.deleteOptions ); const { episodeFileCount = 0, sizeOnDisk = 0 } = statistics; const [deleteFiles, setDeleteFiles] = useState(false); const handleDeleteFilesChange = useCallback( ({ value }: CheckInputChanged) => { setDeleteFiles(value); }, [] ); const handleDeleteSeriesConfirmed = useCallback(() => { dispatch( deleteSeries({ id: seriesId, deleteFiles, addImportListExclusion }) ); }, [seriesId, addImportListExclusion, deleteFiles, dispatch]); const handleDeleteOptionChange = useCallback( ({ name, value }: CheckInputChanged) => { dispatch(setDeleteOption({ [name]: value })); }, [dispatch] ); return ( {translate('DeleteSeriesModalHeader', { title })}
{path}
{translate('AddListExclusion')} {episodeFileCount === 0 ? translate('DeleteSeriesFolder') : translate('DeleteEpisodesFiles', { episodeFileCount })} {deleteFiles ? (
{episodeFileCount ? (
{translate('DeleteSeriesFolderEpisodeCount', { episodeFileCount, size: formatBytes(sizeOnDisk), })}
) : null}
) : null}
); } export default DeleteSeriesModalContent;