@@ -3,7 +3,7 @@ import { FormControl } from '@/components/ui/form/FormControl';
33import { FormItem } from '@/components/ui/form/FormItem' ;
44import { FormLabel } from '@/components/ui/form/FormLabel' ;
55import { FormMessage } from '@/components/ui/form/FormMessage' ;
6- import { SchemaPlanLimits , SchemaResourcesPerInstance } from '@/lib/api.gen' ;
6+ import { SchemaRegion , SchemaPlanLimits , SchemaResourcesPerInstance } from '@/lib/api.gen' ;
77import { excludeFalsy } from '@/lib/arrays/excludeFalsy' ;
88import { cn } from '@/lib/cn' ;
99import { humanFileSize } from '@/lib/humanFileSize' ;
@@ -13,37 +13,39 @@ import { isPositive } from '@/lib/types/isPositive';
1313import { ArrowDownIcon , ArrowRightIcon } from 'lucide-react' ;
1414import { useCallback , useMemo , useState } from 'react' ;
1515
16- export function ResourcesPerInstance ( { planLimits, resourcesPerInstance } : {
16+ export function ResourcesPerInstance ( { planLimits, resourcesPerInstance, selectedRegion } : {
1717 readonly planLimits : SchemaPlanLimits | undefined ,
1818 readonly resourcesPerInstance : SchemaResourcesPerInstance | undefined
19+ readonly selectedRegion : SchemaRegion | undefined
1920} ) {
2021 const [ toggled , setToggled ] = useState ( false ) ;
2122 const onUsageLimitsClick = useCallback ( ( ) => {
2223 setToggled ( ! toggled ) ;
2324 } , [ toggled , setToggled ] ) ;
2425
2526 const expirationMonths = isPositive ( planLimits ?. expirationMonths ) && planLimits . expirationMonths < 1000 && planLimits . expirationMonths ;
26-
27+ console . log ( selectedRegion ) ;
28+ const multiplier = selectedRegion ?. purchasedBlockMultiplier ?? 1 ;
2729 const rows = useMemo ( ( ) => {
2830 if ( ! planLimits || ! resourcesPerInstance ) {
2931 return [ ] ;
3032 }
3133 return [
3234 isPositive ( planLimits . totalReadCount ) && {
3335 label : 'Total Reads' ,
34- value : `${ humanNumber ( planLimits . totalReadCount ) } reads` ,
36+ value : `${ humanNumber ( planLimits . totalReadCount * multiplier ) } reads` ,
3537 } ,
3638 isPositive ( planLimits . totalReadsBytes ) && {
3739 label : 'Total Read Transfer' ,
38- value : `${ humanFileSize ( planLimits . totalReadsBytes ) } ` ,
40+ value : `${ humanFileSize ( planLimits . totalReadsBytes * multiplier ) } ` ,
3941 } ,
4042 isPositive ( planLimits . readsPerMinuteCount ) && {
4143 label : 'Read Rate' ,
42- value : `${ humanNumber ( planLimits . readsPerMinuteCount * 60 ) } /min` ,
44+ value : `${ humanNumber ( planLimits . readsPerMinuteCount * 60 * multiplier ) } /min` ,
4345 } ,
4446 isPositive ( planLimits . readsPerMinuteBytes ) && {
4547 label : 'Read Bandwidth' ,
46- value : `${ humanFileSize ( planLimits . readsPerMinuteBytes * 60 ) } /min` ,
48+ value : `${ humanFileSize ( planLimits . readsPerMinuteBytes * 60 * multiplier ) } /min` ,
4749 } ,
4850 isPositive ( planLimits . totalWriteCount ) && {
4951 label : 'Total Writes' ,
@@ -63,27 +65,27 @@ export function ResourcesPerInstance({ planLimits, resourcesPerInstance }: {
6365 } ,
6466 isPositive ( planLimits . totalRealTimeMessageDeliveries ) && {
6567 label : 'Total Real-Time Messages' ,
66- value : `${ humanNumber ( planLimits . totalRealTimeMessageDeliveries ) } messages` ,
68+ value : `${ humanNumber ( planLimits . totalRealTimeMessageDeliveries * multiplier ) } messages` ,
6769 } ,
6870 isPositive ( planLimits . totalRealTimeMessageDeliveryBytes ) && {
6971 label : 'Total Real-Time Message Transfer' ,
70- value : `${ humanFileSize ( planLimits . totalRealTimeMessageDeliveryBytes ) } ` ,
72+ value : `${ humanFileSize ( planLimits . totalRealTimeMessageDeliveryBytes * multiplier ) } ` ,
7173 } ,
7274 isPositive ( planLimits . realTimeMessageDeliveriesPerMinute ) && {
7375 label : 'Real-Time Message Rate' ,
74- value : `${ humanNumber ( planLimits . realTimeMessageDeliveriesPerMinute * 60 ) } /min` ,
76+ value : `${ humanNumber ( planLimits . realTimeMessageDeliveriesPerMinute * 60 * multiplier ) } /min` ,
7577 } ,
7678 isPositive ( planLimits . realTimeMessageDeliveryBytesPerMinute ) && {
7779 label : 'Real-Time Message Bandwidth' ,
78- value : `${ humanFileSize ( planLimits . realTimeMessageDeliveryBytesPerMinute * 60 ) } /min` ,
80+ value : `${ humanFileSize ( planLimits . realTimeMessageDeliveryBytesPerMinute * 60 * multiplier ) } /min` ,
7981 } ,
8082 isPositive ( planLimits . tlsHandshakes ) && {
8183 label : 'TLS Handshakes' ,
82- value : `${ humanNumber ( planLimits . tlsHandshakes * 60 ) } ` ,
84+ value : `${ humanNumber ( planLimits . tlsHandshakes * 60 * multiplier ) } ` ,
8385 } ,
8486 isPositive ( planLimits . applicationComputeHours ) && {
8587 label : 'Application Compute Hours' ,
86- value : `${ humanNumber ( planLimits . applicationComputeHours * 60 ) } ` ,
88+ value : `${ humanNumber ( planLimits . applicationComputeHours * 60 * multiplier ) } ` ,
8789 } ,
8890 isPositive ( resourcesPerInstance ?. storageGb ) && {
8991 label : 'Storage' ,
@@ -94,7 +96,7 @@ export function ResourcesPerInstance({ planLimits, resourcesPerInstance }: {
9496 value : pluralize ( expirationMonths , 'month' , 'months' ) ,
9597 } ,
9698 ] . filter ( excludeFalsy ) ;
97- } , [ expirationMonths , planLimits , resourcesPerInstance ] ) ;
99+ } , [ expirationMonths , planLimits , resourcesPerInstance , multiplier ] ) ;
98100
99101 if ( ! planLimits || ! resourcesPerInstance ) {
100102 // The user hasn't selected a plan yet. so let's not show anything for the ResourcesPerInstance space yet.
@@ -107,8 +109,8 @@ export function ResourcesPerInstance({ planLimits, resourcesPerInstance }: {
107109
108110 return < FormItem className = "col-span-3 md:col-span-6" >
109111 < FormLabel >
110- Purchasing usage block for { isPositive ( planLimits . readsPerMinuteCount ) ? `${ humanNumber ( planLimits . readsPerMinuteCount ) } reads/min & ` : '' }
111- { humanNumber ( planLimits . totalReadCount ) } total reads per { isPositive ( planLimits . readsPerMinuteCount ) ? 'region' : 'server' } ,< br className = "hidden sm:block" />
112+ Purchasing usage block for { isPositive ( planLimits . readsPerMinuteCount ) ? `${ humanNumber ( planLimits . readsPerMinuteCount * multiplier ) } reads/min & ` : '' }
113+ { humanNumber ( planLimits . totalReadCount * multiplier ) } total reads { isPositive ( planLimits . readsPerMinuteCount ) ? 'in ' + ( selectedRegion ?. region ?? '' ) + ' region' : 'per server' } ,< br className = "hidden sm:block" />
112114 { isPositive ( planLimits . writesPerMinuteCount ) ? ` ${ humanNumber ( planLimits . writesPerMinuteCount ) } writes/min & ` : ' ' }
113115 { humanNumber ( planLimits . totalWriteCount ) } total writes{ expirationMonths && `, for ${ pluralize ( expirationMonths , 'month' , 'months' ) } ` } .
114116 < br className = "block sm:hidden" />
0 commit comments