import { useCallback, useState } from 'react' import { useParams } from 'react-router-dom' import { Modal, ModalOverlay, ModalContent, ModalHeader, ModalCloseButton, ModalBody, ModalFooter, Button, } from '@chakra-ui/react' import { useSWRConfig } from 'swr' import cx from 'classnames' import FileAPI, { List } from '@/client/api/file' import useFileListSearchParams from '@/hooks/use-file-list-params' import { useAppDispatch, useAppSelector } from '@/store/hook' import { copyModalDidClose, selectionUpdated } from '@/store/ui/files' import FileBrowse from './file-browse' const FileCopy = () => { const { mutate } = useSWRConfig() const dispatch = useAppDispatch() const { fileId } = useParams() const isModalOpen = useAppSelector((state) => state.ui.files.isCopyModalOpen) const selection = useAppSelector((state) => state.ui.files.selection) const [loading, setLoading] = useState(false) const [targetId, setTargetId] = useState() const fileListSearchParams = useFileListSearchParams() const handleMove = useCallback(async () => { if (!targetId) { return } try { setLoading(true) await FileAPI.copy(targetId, { ids: selection, }) if (fileId === targetId) { await mutate(`/files/${targetId}/list?${fileListSearchParams}`) } dispatch(selectionUpdated([])) dispatch(copyModalDidClose()) } finally { setLoading(false) } }, [targetId, fileId, selection, fileListSearchParams, mutate, dispatch]) return ( dispatch(copyModalDidClose())} closeOnOverlayClick={false} > Copy {selection.length} Item(s) to… setTargetId(id)} />
) } export default FileCopy