@@ -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 , SchemaRegion , SchemaResourcesPerInstance } from '@/integrations/api/api.gen' ;
6+ import { SchemaPlan , SchemaRegion } from '@/integrations/api/api.gen' ;
77import { excludeFalsy } from '@/lib/arrays/excludeFalsy' ;
88import { cn } from '@/lib/cn' ;
99import { humanFileSize } from '@/lib/humanFileSize' ;
@@ -13,25 +13,26 @@ 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, selectedRegion, isEnterprise } : {
17- readonly planLimits : SchemaPlanLimits | undefined ;
18- readonly resourcesPerInstance : SchemaResourcesPerInstance | undefined ;
16+ export function ResourcesPerInstance ( { selectedPlan, selectedRegion, isEnterprise } : {
17+ readonly selectedPlan : SchemaPlan | undefined ;
1918 readonly selectedRegion : SchemaRegion | undefined ;
2019 readonly isEnterprise : boolean ;
2120} ) {
2221 const [ toggled , setToggled ] = useState ( false ) ;
2322 const onUsageLimitsClick = useCallback ( ( ) => {
2423 setToggled ( ! toggled ) ;
2524 } , [ toggled , setToggled ] ) ;
25+ const planLimits = selectedPlan ?. planLimits ;
26+ const resourcesPerInstance = selectedPlan ?. resourcesPerInstance ;
2627
2728 const expirationMonths = isPositive ( planLimits ?. expirationMonths ) && planLimits . expirationMonths < 1000
2829 && planLimits . expirationMonths ;
2930 const multiplier = selectedRegion ?. purchasedBlockMultiplier ?? 1 ;
30- const rows = useMemo ( ( ) => {
31+ const rows = useMemo < { label : string ; value : string } [ ] > ( ( ) => {
3132 if ( ! planLimits ) {
3233 return [ ] ;
3334 }
34- return [
35+ return ( [
3536 isPositive ( planLimits . totalReadCount ) && {
3637 label : 'Total Reads' ,
3738 value : `${ humanNumber ( planLimits . totalReadCount * multiplier ) } reads` ,
@@ -88,16 +89,24 @@ export function ResourcesPerInstance({ planLimits, resourcesPerInstance, selecte
8889 label : 'Application Compute Hours' ,
8990 value : `${ humanNumber ( planLimits . applicationComputeHours * 60 * multiplier ) } ` ,
9091 } ,
91- resourcesPerInstance && isPositive ( resourcesPerInstance . storageGb ) && {
92+ ! ! resourcesPerInstance && isPositive ( resourcesPerInstance . storageGb ) && {
9293 label : 'Storage' ,
9394 value : `${ humanFileSize ( resourcesPerInstance . storageGb * 1000_000_000 ) } ` ,
9495 } ,
95- expirationMonths && {
96+ ! ! expirationMonths && {
9697 label : 'Expiration' ,
9798 value : pluralize ( expirationMonths , 'month' , 'months' ) ,
9899 } ,
99- ] . filter ( excludeFalsy ) ;
100- } , [ expirationMonths , planLimits , resourcesPerInstance , multiplier ] ) ;
100+ ! ! selectedRegion ?. id && {
101+ label : 'Region ID' ,
102+ value : selectedRegion . id ,
103+ } ,
104+ ! ! selectedPlan ?. id && {
105+ label : 'Plan ID' ,
106+ value : selectedPlan . id ,
107+ } ,
108+ ] satisfies Array < boolean | { label : string ; value : string } > ) . filter ( excludeFalsy ) ;
109+ } , [ expirationMonths , selectedRegion , selectedPlan , multiplier ] ) ;
101110
102111 if ( ! planLimits ) {
103112 // The user hasn't selected a plan yet. so let's not show anything for the ResourcesPerInstance space yet.
@@ -119,7 +128,7 @@ export function ResourcesPerInstance({ planLimits, resourcesPerInstance, selecte
119128 ? ` ${ humanNumber ( planLimits . writesPerMinuteCount ) } writes/min & `
120129 : ' ' ;
121130 const inRegionOrPerServer = isPositive ( planLimits . readsPerMinuteCount )
122- ? ' in ' + ( selectedRegion ?. region ?? '' ) + ' region'
131+ ? ` in ${ selectedRegion ?. region ?? '' } region ${ selectedRegion ? ` ( ${ selectedRegion ?. id } )` : '' } `
123132 : 'per server' ;
124133 const forMonths = expirationMonths ? `, for ${ pluralize ( expirationMonths , 'month' , 'months' ) } ` : '' ;
125134 const forThePriceAbove = isEnterprise
@@ -130,7 +139,7 @@ export function ResourcesPerInstance({ planLimits, resourcesPerInstance, selecte
130139 return (
131140 < FormItem className = "basis-full" >
132141 < FormLabel onClick = { onUsageLimitsClick } >
133- Purchasing usage block for { maybeReadsPerMinute }
142+ < em className = "text-muted-foreground" > { selectedPlan ?. id } </ em > Purchasing usage block for { maybeReadsPerMinute }
134143 { humanNumber ( planLimits . totalReadCount * multiplier ) } total reads { inRegionOrPerServer } ,
135144 < br className = "hidden sm:block" />
136145 { maybeWritesPerMinute } { humanNumber ( planLimits . totalWriteCount ) } total writes{ forMonths } .
0 commit comments