import { useDialog } from "@/contexts/DialogProvider"; import { cloudDisabled, setCloudStorage } from "@/features/collectionStorage"; import { useDangerStyles } from "@/hooks/useDangerStyles"; import useStorageInfo from "@/hooks/useStorageInfo"; import { Button, Field, MessageBar, MessageBarBody, MessageBarTitle, ProgressBar } from "@fluentui/react-components"; import { ArrowDownload20Regular, ArrowUpload20Regular } from "@fluentui/react-icons"; import { useOptionsStyles } from "../hooks/useOptionsStyles"; import exportData from "../utils/exportData"; import importData from "../utils/importData"; export default function StorageSection(): React.ReactElement { const { bytesInUse, storageQuota, usedStorageRatio } = useStorageInfo(); const [importResult, setImportResult] = useState(null); const [isCloudDisabled, setCloudDisabled] = useState(null!); const dialog = useDialog(); const cls = useOptionsStyles(); const dangerCls = useDangerStyles(); useEffect(() => { cloudDisabled.getValue().then(setCloudDisabled); return cloudDisabled.watch(setCloudDisabled); }, []); const handleImport = (): void => dialog.pushPrompt({ title: i18n.t("options_page.storage.import_prompt.title"), confirmText: i18n.t("options_page.storage.import_prompt.proceed"), onConfirm: () => importData().then(setImportResult), content: ( { i18n.t("options_page.storage.import_prompt.warning_title") } { i18n.t("options_page.storage.import_prompt.warning_text") } ) }); const handleDisableCloud = (): void => dialog.pushPrompt({ title: i18n.t("options_page.storage.disable"), content: i18n.t("options_page.storage.disable_prompt.text"), confirmText: i18n.t("options_page.storage.disable_prompt.action"), destructive: true, onConfirm: () => setCloudStorage(false) }); return ( <> { isCloudDisabled === false && = 0.8 ? "error" : undefined } > } { isCloudDisabled === true && }
{ importResult !== null && { importResult === true ? i18n.t("options_page.storage.import_results.success") : i18n.t("options_page.storage.import_results.error") } } { isCloudDisabled === false &&
} ); }