@@ -11,7 +11,6 @@ import { subMonths } from "date-fns";
11
11
import Link from "next/link" ;
12
12
import { Suspense , useMemo } from "react" ;
13
13
import type { ThirdwebClient } from "thirdweb" ;
14
- import { toPercent , toSize } from "utils/number" ;
15
14
import { TotalSponsoredChartCardUI } from "../../../../_components/TotalSponsoredCard" ;
16
15
import { SponsoredTransactionsTable } from "./SponsoredTransactionsTable" ;
17
16
import { UsageCard } from "./UsageCard" ;
@@ -31,6 +30,11 @@ type UsageProps = {
31
30
} [ ] ;
32
31
} ;
33
32
33
+ const compactNumberFormatter = new Intl . NumberFormat ( "en-US" , {
34
+ minimumFractionDigits : 0 ,
35
+ notation : "compact" ,
36
+ } ) ;
37
+
34
38
export const Usage : React . FC < UsageProps > = ( {
35
39
usage : usageData ,
36
40
subscriptions,
@@ -39,23 +43,6 @@ export const Usage: React.FC<UsageProps> = ({
39
43
client,
40
44
projects,
41
45
} ) => {
42
- // TODO - get this from team instead of account
43
- const storageMetrics = useMemo ( ( ) => {
44
- if ( ! usageData ) {
45
- return { } ;
46
- }
47
-
48
- const consumedBytes = usageData . usage . storage . sumFileSizeBytes ;
49
- const limitBytes = usageData . limits . storage ;
50
- const percent = toPercent ( consumedBytes , limitBytes ) ;
51
-
52
- return {
53
- total : `${ toSize ( Math . min ( consumedBytes , limitBytes ) , "MB" ) } of ${ toSize ( limitBytes ) } included storage used` ,
54
- progress : percent ,
55
- totalUsage : `Total Usage: ${ toSize ( consumedBytes , "MB" ) } ` ,
56
- } ;
57
- } , [ usageData ] ) ;
58
-
59
46
// TODO - get this from team instead of account
60
47
const rpcMetrics = useMemo ( ( ) => {
61
48
if ( ! usageData ) {
@@ -66,7 +53,8 @@ export const Usage: React.FC<UsageProps> = ({
66
53
title : "Unlimited Requests" ,
67
54
total : (
68
55
< span className = "text-muted-foreground" >
69
- { usageData . rateLimits . rpc } Requests Per Second
56
+ { compactNumberFormatter . format ( usageData . rateLimits . rpc ) } Requests Per
57
+ Second
70
58
</ span >
71
59
) ,
72
60
} ;
@@ -81,7 +69,8 @@ export const Usage: React.FC<UsageProps> = ({
81
69
title : "Unlimited Requests" ,
82
70
total : (
83
71
< span className = "text-muted-foreground" >
84
- { usageData . rateLimits . storage } Requests Per Second
72
+ { compactNumberFormatter . format ( usageData . rateLimits . storage ) } Requests
73
+ Per Second
85
74
</ span >
86
75
) ,
87
76
} ;
@@ -100,6 +89,8 @@ export const Usage: React.FC<UsageProps> = ({
100
89
? new Date ( usageSub . currentPeriodEnd )
101
90
: new Date ( ) ;
102
91
92
+ const storageUsage = team . capabilities . storage . upload ;
93
+
103
94
return (
104
95
< div className = "flex grow flex-col gap-8" >
105
96
< InAppWalletUsersChartCard
@@ -139,7 +130,15 @@ export const Usage: React.FC<UsageProps> = ({
139
130
/>
140
131
141
132
< UsageCard
142
- { ...storageMetrics }
133
+ title = { `${ formatStorageBytes ( storageUsage . totalFileSizeBytesLimit ) } Storage` }
134
+ total = {
135
+ storageUsage . rateLimit > 10_000 ? undefined : (
136
+ < p className = "text-muted-foreground" >
137
+ { compactNumberFormatter . format ( storageUsage . rateLimit ) } Requests
138
+ Per Second
139
+ </ p >
140
+ )
141
+ }
143
142
name = "Storage Pinning"
144
143
description = "Amount of IPFS Storage pinning allowed in your plan"
145
144
>
@@ -274,3 +273,29 @@ async function AsyncTotalSponsoredChartCard(
274
273
/>
275
274
) ;
276
275
}
276
+
277
+ function formatStorageBytes ( bytes : number ) {
278
+ const ONE_KB = 1024 ;
279
+ const ONE_MB = ONE_KB * 1024 ;
280
+ const ONE_GB = ONE_MB * 1024 ;
281
+
282
+ if ( bytes < ONE_KB ) {
283
+ return `${ bytes } bytes` ;
284
+ }
285
+
286
+ if ( bytes < ONE_MB ) {
287
+ return `${ compactNumberFormatter . format ( bytes / ONE_KB ) } KB` ;
288
+ }
289
+
290
+ if ( bytes < ONE_GB ) {
291
+ return `${ compactNumberFormatter . format ( bytes / ONE_MB ) } MB` ;
292
+ }
293
+
294
+ const gbs = bytes / ONE_GB ;
295
+
296
+ if ( gbs > 1000 ) {
297
+ return "Unlimited" ;
298
+ }
299
+
300
+ return `${ compactNumberFormatter . format ( gbs ) } GB` ;
301
+ }
0 commit comments