diff --git a/src/renderer/src/components/WebdavModals.tsx b/src/renderer/src/components/WebdavModals.tsx index a96c96fde8..b587a79aa8 100644 --- a/src/renderer/src/components/WebdavModals.tsx +++ b/src/renderer/src/components/WebdavModals.tsx @@ -1,16 +1,9 @@ -import { backupToWebdav, restoreFromWebdav } from '@renderer/services/BackupService' -import { formatFileSize } from '@renderer/utils' -import { Input, Modal, Select, Spin } from 'antd' +import { backupToWebdav } from '@renderer/services/BackupService' +import { Input, Modal } from 'antd' import dayjs from 'dayjs' import { useCallback, useState } from 'react' import { useTranslation } from 'react-i18next' -interface BackupFile { - fileName: string - modifiedTime: string - size: number -} - interface WebdavModalProps { isModalVisible: boolean handleBackup: () => void @@ -87,156 +80,3 @@ export function WebdavBackupModal({ ) } - -interface WebdavRestoreModalProps { - isRestoreModalVisible: boolean - handleRestore: () => void - handleCancel: () => void - restoring: boolean - selectedFile: string | null - setSelectedFile: (value: string | null) => void - loadingFiles: boolean - backupFiles: BackupFile[] -} - -interface UseWebdavRestoreModalProps { - webdavHost: string | undefined - webdavUser: string | undefined - webdavPass: string | undefined - webdavPath: string | undefined - restoreMethod?: typeof restoreFromWebdav -} - -export function useWebdavRestoreModal({ - webdavHost, - webdavUser, - webdavPass, - webdavPath, - restoreMethod -}: UseWebdavRestoreModalProps) { - const { t } = useTranslation() - - const [isRestoreModalVisible, setIsRestoreModalVisible] = useState(false) - const [restoring, setRestoring] = useState(false) - const [selectedFile, setSelectedFile] = useState(null) - const [loadingFiles, setLoadingFiles] = useState(false) - const [backupFiles, setBackupFiles] = useState([]) - - const showRestoreModal = useCallback(async () => { - if (!webdavHost) { - window.message.error({ content: t('message.error.invalid.webdav'), key: 'webdav-error' }) - return - } - - setIsRestoreModalVisible(true) - setLoadingFiles(true) - try { - const files = await window.api.backup.listWebdavFiles({ - webdavHost, - webdavUser, - webdavPass, - webdavPath - }) - setBackupFiles(files) - } catch (error: any) { - window.message.error({ content: error.message, key: 'list-files-error' }) - } finally { - setLoadingFiles(false) - } - }, [webdavHost, webdavUser, webdavPass, webdavPath, t]) - - const handleRestore = useCallback(async () => { - if (!selectedFile || !webdavHost) { - window.message.error({ - content: !selectedFile ? t('message.error.no.file.selected') : t('message.error.invalid.webdav'), - key: 'restore-error' - }) - return - } - - window.modal.confirm({ - title: t('settings.data.webdav.restore.confirm.title'), - content: t('settings.data.webdav.restore.confirm.content'), - centered: true, - onOk: async () => { - setRestoring(true) - try { - await (restoreMethod ?? restoreFromWebdav)(selectedFile) - setIsRestoreModalVisible(false) - } catch (error: any) { - window.message.error({ content: error.message, key: 'restore-error' }) - } finally { - setRestoring(false) - } - } - }) - }, [selectedFile, webdavHost, t, restoreMethod]) - - const handleCancel = () => { - setIsRestoreModalVisible(false) - } - - return { - isRestoreModalVisible, - handleRestore, - handleCancel, - restoring, - selectedFile, - setSelectedFile, - loadingFiles, - backupFiles, - showRestoreModal - } -} - -export function WebdavRestoreModal({ - isRestoreModalVisible, - handleRestore, - handleCancel, - restoring, - selectedFile, - setSelectedFile, - loadingFiles, - backupFiles -}: WebdavRestoreModalProps) { - const { t } = useTranslation() - - return ( - -
-