import { useAFFiNEI18N } from '@affine/i18n/hooks'; import { Button } from '@toeverything/components/button'; import { Tooltip } from '@toeverything/components/tooltip'; import clsx from 'clsx'; import { useMemo } from 'react'; import * as styles from './share.css'; export interface StorageProgressProgress { max: number; value: number; onUpgrade: () => void; } const transformBytesToMB = (bytes: number) => { return (bytes / 1024 / 1024).toFixed(2); }; const transformBytesToGB = (bytes: number) => { return (bytes / 1024 / 1024 / 1024).toFixed(2); }; export const StorageProgress = ({ max: upperLimit, value, onUpgrade, }: StorageProgressProgress) => { const t = useAFFiNEI18N(); const percent = useMemo( () => Math.round((value / upperLimit) * 100), [upperLimit, value] ); const used = useMemo(() => transformBytesToMB(value), [value]); const max = useMemo(() => transformBytesToGB(upperLimit), [upperLimit]); return ( <>
{t['com.affine.storage.used.hint']()} {used}MB/{max}GB
80, danger: percent > 99, })} style={{ width: `${percent}%` }} >
{percent > 80 ? (
{t['com.affine.storage.extend.hint']()} {t['com.affine.storage.extend.link']()}
) : null} ); };