diff --git a/dashboard/package.json b/dashboard/package.json
@@ -15,6 +15,7 @@
"test:coverage": "vitest run --coverage"
},
"dependencies": {
+ "@chbphone55/pretty-bytes": "^1.0.0",
"@codemirror/language": "^6.10.1",
"@heroicons/react": "^2.1.3",
"@hookform/resolvers": "^3.4.2",
@@ -72,7 +73,6 @@
"lucide-react": "^0.359.0",
"next-themes": "^0.3.0",
"ofetch": "^1.3.4",
- "pretty-bytes": "^6.1.1",
"react": "^18.3.1",
"react-copy-to-clipboard": "^5.1.0",
"react-day-picker": "^8.10.1",
diff --git a/dashboard/pnpm-lock.yaml b/dashboard/pnpm-lock.yaml
@@ -5,6 +5,9 @@ settings:
excludeLinksFromLockfile: false
dependencies:
+ '@chbphone55/pretty-bytes':
+ specifier: ^1.0.0
+ version: 1.0.0
'@codemirror/language':
specifier: ^6.10.1
version: 6.10.1
@@ -176,9 +179,6 @@ dependencies:
ofetch:
specifier: ^1.3.4
version: 1.3.4
- pretty-bytes:
- specifier: ^6.1.1
- version: 6.1.1
react:
specifier: ^18.3.1
version: 18.3.1
@@ -661,6 +661,10 @@ packages:
'@babel/helper-validator-identifier': 7.24.5
to-fast-properties: 2.0.0
+ /@chbphone55/pretty-bytes@1.0.0:
+ resolution: {integrity: sha512-XQA5iT7SsRP4ispmURiGXRWdwDo5pD7B1gCRxC/212rd5/IItsFsyhQXtM0v6PpmMW0Dzc3E2STwufD5u5WQrQ==}
+ dev: false
+
/@codemirror/language@6.10.1:
resolution: {integrity: sha512-5GrXzrhq6k+gL5fjkAwt90nYDmjlzTIJV8THnxNFtNKWotMIlzzN+CpqxqwXOECnUdOndmSeWntVrVcv5axWRQ==}
dependencies:
@@ -9252,11 +9256,6 @@ packages:
hasBin: true
dev: true
- /pretty-bytes@6.1.1:
- resolution: {integrity: sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==}
- engines: {node: ^14.13.1 || >=16.0.0}
- dev: false
-
/pretty-format@27.5.1:
resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==}
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
diff --git a/dashboard/src/features/users/components/used-user-traffic.tsx b/dashboard/src/features/users/components/used-user-traffic.tsx
@@ -1,7 +1,7 @@
import { FC } from 'react'
import { UserType } from '@marzneshin/features/users';
import { CircularProgress } from '@nextui-org/progress';
-import prettyBytes from 'pretty-bytes';
+import { format } from '@chbphone55/pretty-bytes';
import { useTranslation } from 'react-i18next';
@@ -13,6 +13,8 @@ export const UserUsedTraffic: FC<UserUsedTrafficProps> = (
{ user }
) => {
const { t } = useTranslation()
+ const formatedUsedTraffic = format(user.used_traffic)
+ const formatedDatalimit = user.data_limit !== null ? format(user.data_limit) : []
return (
<div className="flex gap-x-5 justify-start items-center">
<CircularProgress
@@ -22,10 +24,10 @@ export const UserUsedTraffic: FC<UserUsedTrafficProps> = (
/>
<div>
<p className="text-sm font-medium text-gray-900 dark:text-gray-50">
- {prettyBytes(user.used_traffic)}
+ {formatedUsedTraffic[0]} {formatedUsedTraffic[1]}
</p>
<p className="text-sm text-gray-500 dark:text-gray-500">
- {user.data_limit ? prettyBytes(user.data_limit) : t('page.users.unlimited')}
+ {user.data_limit ? `${formatedDatalimit[0]} ${formatedDatalimit[1]}` : t('page.users.unlimited')}
</p>
</div>
</div>