make storage conversion to human readable better
This commit is contained in:
parent
386deda508
commit
afdeb16e0e
|
@ -1,6 +1,6 @@
|
||||||
import { Box, Typography } from '@mui/material';
|
import { Box, Typography } from '@mui/material';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { convertBytesToHumanReadable } from 'utils/billing';
|
import { makeHumanReadableStorage } from 'utils/billing';
|
||||||
import constants from 'utils/strings/constants';
|
import constants from 'utils/strings/constants';
|
||||||
|
|
||||||
interface Iprops {
|
interface Iprops {
|
||||||
|
@ -17,13 +17,9 @@ export default function StorageSection({ totalUsage, totalStorage }: Iprops) {
|
||||||
<Typography
|
<Typography
|
||||||
fontWeight={'bold'}
|
fontWeight={'bold'}
|
||||||
sx={{ fontSize: '24px', lineHeight: '30px' }}>
|
sx={{ fontSize: '24px', lineHeight: '30px' }}>
|
||||||
{`${convertBytesToHumanReadable(
|
{`${makeHumanReadableStorage(totalStorage - totalUsage)} ${
|
||||||
totalStorage - totalUsage,
|
constants.OF
|
||||||
1
|
} ${makeHumanReadableStorage(totalStorage)} ${constants.FREE}`}
|
||||||
)} ${constants.OF} ${convertBytesToHumanReadable(
|
|
||||||
totalStorage,
|
|
||||||
0
|
|
||||||
)} ${constants.FREE}`}
|
|
||||||
</Typography>
|
</Typography>
|
||||||
</Box>
|
</Box>
|
||||||
);
|
);
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { Typography } from '@mui/material';
|
import { Typography } from '@mui/material';
|
||||||
import { SpaceBetweenFlex } from 'components/Container';
|
import { SpaceBetweenFlex } from 'components/Container';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { convertBytesToHumanReadable } from 'utils/billing';
|
import { makeHumanReadableStorage } from 'utils/billing';
|
||||||
import constants from 'utils/strings/constants';
|
import constants from 'utils/strings/constants';
|
||||||
import { Progressbar } from '../../styledComponents';
|
import { Progressbar } from '../../styledComponents';
|
||||||
|
|
||||||
|
@ -17,9 +17,9 @@ export function IndividualUsageSection({ userDetails }) {
|
||||||
style={{
|
style={{
|
||||||
marginTop: '12px',
|
marginTop: '12px',
|
||||||
}}>
|
}}>
|
||||||
<Typography variant="caption">{`${convertBytesToHumanReadable(
|
<Typography variant="caption">{`${makeHumanReadableStorage(
|
||||||
userDetails.usage,
|
userDetails.usage,
|
||||||
1
|
'round-up'
|
||||||
)} ${constants.USED}`}</Typography>
|
)} ${constants.USED}`}</Typography>
|
||||||
<Typography variant="caption" fontWeight={'bold'}>
|
<Typography variant="caption" fontWeight={'bold'}>
|
||||||
{constants.PHOTO_COUNT(userDetails.fileCount ?? 0)}
|
{constants.PHOTO_COUNT(userDetails.fileCount ?? 0)}
|
||||||
|
|
|
@ -29,6 +29,10 @@ enum RESPONSE_STATUS {
|
||||||
fail = 'fail',
|
fail = 'fail',
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const StorageUnits = ['B', 'KB', 'MB', 'GB', 'TB'];
|
||||||
|
|
||||||
|
const TEN_GB = 10 * 1024 * 1024 * 1024;
|
||||||
|
|
||||||
export function convertBytesToGBs(bytes, precision?): string {
|
export function convertBytesToGBs(bytes, precision?): string {
|
||||||
return (bytes / (1024 * 1024 * 1024)).toFixed(precision ?? 2) + ' GB';
|
return (bytes / (1024 * 1024 * 1024)).toFixed(precision ?? 2) + ' GB';
|
||||||
}
|
}
|
||||||
|
@ -46,6 +50,34 @@ export function convertBytesToHumanReadable(
|
||||||
return (bytes / Math.pow(1024, i)).toFixed(precision) + ' ' + sizes[i];
|
return (bytes / Math.pow(1024, i)).toFixed(precision) + ' ' + sizes[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function makeHumanReadableStorage(
|
||||||
|
bytes: number,
|
||||||
|
|
||||||
|
round: 'round-up' | 'round-down' = 'round-down'
|
||||||
|
): string {
|
||||||
|
const i = Math.floor(Math.log(bytes) / Math.log(1024));
|
||||||
|
|
||||||
|
let quantity = bytes / Math.pow(1024, i);
|
||||||
|
let unit = StorageUnits[i];
|
||||||
|
|
||||||
|
if (quantity > 100 && unit !== 'GB') {
|
||||||
|
quantity /= 1024;
|
||||||
|
unit = StorageUnits[i + 1];
|
||||||
|
}
|
||||||
|
|
||||||
|
quantity = Number(quantity.toFixed(1));
|
||||||
|
|
||||||
|
if (bytes >= TEN_GB) {
|
||||||
|
if (round === 'round-up') {
|
||||||
|
quantity = Math.round(quantity + 1);
|
||||||
|
} else {
|
||||||
|
quantity = Math.round(quantity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return `${quantity} ${unit}`;
|
||||||
|
}
|
||||||
|
|
||||||
export function hasPaidSubscription(subscription: Subscription) {
|
export function hasPaidSubscription(subscription: Subscription) {
|
||||||
return (
|
return (
|
||||||
subscription &&
|
subscription &&
|
||||||
|
|
Loading…
Reference in a new issue