@@ -12,28 +12,37 @@ import { LoaderCircleIcon, ShieldCheckIcon, ShieldXIcon } from 'lucide-react';
1212import { useEffect , useMemo , useState } from 'react' ;
1313
1414export function InstanceStatusCell (
15- { instance } : { readonly instance : Instance } ,
15+ { instance, index } : { readonly instance : Instance ; index : number } ,
1616) {
17- const operationsUrl = useMemo ( ( ) => getOperationsUrlForInstance ( instance ) , [ instance ] ) ;
18- const instanceParams = useInstanceClientIdParams ( { operationsUrl, instanceId : instance . id } ) ;
1917 const { update : canManage } = useOrganizationClusterInstancePermissions ( ) ;
18+ const operationsUrl = useMemo ( ( ) => getOperationsUrlForInstance ( instance ) , [ instance ] ) ;
19+ const instanceParams = useInstanceClientIdParams ( {
20+ operationsUrl,
21+ instanceId : instance . id ,
22+ forceFabricConnect : true ,
23+ } ) ;
2024 const { mutate : setStatus , isPending : isSettingStatus } = useSetStatus ( ) ;
2125
22- // We want to spread the initial requests across 5 seconds.
23- const [ randomOffset ] = useState ( ( ) => Math . floor ( Math . random ( ) * 5_000 ) ) ;
2426 const [ ready , setReady ] = useState ( false ) ;
2527
28+ // Spread the status requests out.
2629 useEffect ( ( ) => {
27- const timer = setTimeout ( ( ) => setReady ( true ) , randomOffset ) ;
30+ const timer = setTimeout ( ( ) => setReady ( true ) , index * 500 ) ;
2831 return ( ) => clearTimeout ( timer ) ;
29- } , [ randomOffset ] ) ;
32+ } , [ index ] ) ;
3033
31- const { data : statusResponse , isLoading, isFetching } = useQuery ( getStatusQueryOptions ( instanceParams , ready ) ) ;
34+ const { data : statusResponse , isLoading, isFetching } = useQuery (
35+ getStatusQueryOptions ( instanceParams , ready && canManage ) ,
36+ ) ;
3237
3338 const systemStatus = getSystemStatusById ( statusResponse , 'availability' ) || 'Unknown' ;
3439 const isAvailable = systemStatus === 'Available' ;
3540 const isUnavailable = systemStatus === 'Unavailable' ;
3641
42+ if ( ! canManage ) {
43+ return null ;
44+ }
45+
3746 return (
3847 < div className = "flex items-center gap-2" >
3948 < Tooltip >
0 commit comments