mirror of
https://github.com/Radarr/Radarr.git
synced 2026-04-20 21:55:03 -04:00
Convert Manual Import to Typescript
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
import React, { useCallback, useEffect, useState } from 'react';
|
||||
import Modal from 'Components/Modal/Modal';
|
||||
import usePrevious from 'Helpers/Hooks/usePrevious';
|
||||
import { sizes } from 'Helpers/Props';
|
||||
import translate from 'Utilities/String/translate';
|
||||
import InteractiveImportSelectFolderModalContent from './Folder/InteractiveImportSelectFolderModalContent';
|
||||
import InteractiveImportModalContent from './Interactive/InteractiveImportModalContent';
|
||||
|
||||
interface InteractiveImportModalProps {
|
||||
isOpen: boolean;
|
||||
folder?: string;
|
||||
downloadId?: string;
|
||||
modalTitle?: string;
|
||||
onModalClose(): void;
|
||||
}
|
||||
|
||||
function InteractiveImportModal(props: InteractiveImportModalProps) {
|
||||
const {
|
||||
isOpen,
|
||||
folder,
|
||||
downloadId,
|
||||
modalTitle = translate('ManualImport'),
|
||||
onModalClose,
|
||||
...otherProps
|
||||
} = props;
|
||||
|
||||
const [folderPath, setFolderPath] = useState<string | undefined>(folder);
|
||||
const previousIsOpen = usePrevious(isOpen);
|
||||
|
||||
const onFolderSelect = useCallback(
|
||||
(path: string) => {
|
||||
setFolderPath(path);
|
||||
},
|
||||
[setFolderPath]
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
setFolderPath(folder);
|
||||
}, [folder, setFolderPath]);
|
||||
|
||||
useEffect(() => {
|
||||
if (previousIsOpen && !isOpen) {
|
||||
setFolderPath(folder);
|
||||
}
|
||||
}, [folder, previousIsOpen, isOpen, setFolderPath]);
|
||||
|
||||
return (
|
||||
<Modal
|
||||
isOpen={isOpen}
|
||||
size={sizes.EXTRA_LARGE}
|
||||
closeOnBackgroundClick={false}
|
||||
onModalClose={onModalClose}
|
||||
>
|
||||
{folderPath || downloadId ? (
|
||||
<InteractiveImportModalContent
|
||||
{...otherProps}
|
||||
folder={folderPath}
|
||||
downloadId={downloadId}
|
||||
modalTitle={modalTitle}
|
||||
onModalClose={onModalClose}
|
||||
/>
|
||||
) : (
|
||||
<InteractiveImportSelectFolderModalContent
|
||||
{...otherProps}
|
||||
modalTitle={modalTitle}
|
||||
onFolderSelect={onFolderSelect}
|
||||
onModalClose={onModalClose}
|
||||
/>
|
||||
)}
|
||||
</Modal>
|
||||
);
|
||||
}
|
||||
|
||||
export default InteractiveImportModal;
|
||||
Reference in New Issue
Block a user