import { Capacitor } from '@capacitor/core' import { Button, Card, Chip, LinearProgress, Typography } from '@mui/joy' import { useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import { useNavigate } from 'react-router-dom' import { useUserProfile } from '../../queries/UserQueries' import { GetStorageUsage } from '../../utils/Fetcher' import { isPlusAccount } from '../../utils/Helpers' import ConfirmationModal from '../Modals/Inputs/ConfirmationModal' import SettingsLayout from './SettingsLayout' const StorageSettings = () => { const { t } = useTranslation('settings') const Navigate = useNavigate() const { data: userProfile } = useUserProfile() const [usage, setUsage] = useState({ used: 0, total: 0 }) const [loading, setLoading] = useState(true) const [confirmModalConfig, setConfirmModalConfig] = useState({}) const showConfirmation = ( message, title, onConfirm, confirmText = t('common.confirm'), cancelText = t('common.cancel'), color = 'primary', ) => { setConfirmModalConfig({ isOpen: true, message, title, confirmText, cancelText, color, onClose: isConfirmed => { if (isConfirmed) { onConfirm() } setConfirmModalConfig({}) }, }) } useEffect(() => { if (isPlusAccount(userProfile)) { GetStorageUsage().then(resp => { resp.json().then(data => { setUsage(data.res) setLoading(false) }) }) } }, [userProfile]) const percent = usage.total > 0 ? Math.round((usage.used / usage.total) * 100) : 0 const usedMB = (usage.used / (1024 * 1024)).toFixed(2) const totalMB = (usage.total / (1024 * 1024)).toFixed(2) return (
{t('storage.serverTitle')} {!isPlusAccount(userProfile) && ( {t('common.plusFeature')} )} {t('storage.serverDescription')} {!isPlusAccount(userProfile) ? ( <> {t('storage.usagePlaceholder')} {t('storage.basicPlanNotice')} ) : loading ? ( <> {t('common.loading')} ) : ( <> {t('storage.usage', { used: usedMB, total: totalMB, percent, })} )} {Capacitor.isNativePlatform() ? t('storage.localTitleApp') : t('storage.localTitleBrowser')} {t('storage.localDescription')} {Capacitor.isNativePlatform() && ( {t('storage.appPreferences')} {t('storage.deviceOnly')} {t('storage.appPreferencesDescription')} )} {/* Modals */} {confirmModalConfig?.isOpen && ( )}
) } export default StorageSettings