packages/react/src/vm-extension/pool-vm-ext-list.tsx (45 lines of code) (raw):

import { inject } from "@azure/bonito-core/lib/environment"; import { PoolService } from "@batch/ui-service"; import { BatchDependencyName } from "@batch/ui-service/lib/environment"; import React from "react"; import { VmExtensionList, VmExtItem } from "./vm-extension-list"; interface PoolVmExtensionListProps { poolResourceId: string; onItemClick?: (item: VmExtItem) => void; } export const PoolVMExtList = (props: PoolVmExtensionListProps) => { const { poolResourceId, onItemClick } = props; const [extensions, setExtensions] = React.useState<VmExtItem[]>([]); const [loading, setLoading] = React.useState<boolean>(true); const poolService: PoolService = React.useMemo(() => { return inject(BatchDependencyName.PoolService); }, []); React.useEffect(() => { let isMounted = true; setLoading(true); poolService .get(poolResourceId) .then((pool) => { if (!isMounted) { return; } const extensions = pool?.properties?.deploymentConfiguration ?.virtualMachineConfiguration?.extensions ?? []; setExtensions(extensions as VmExtItem[]); }) .finally(() => { if (!isMounted) { return; } setLoading(false); }); return () => { isMounted = false; }; }, [poolResourceId, poolService]); return ( <VmExtensionList extensions={extensions} loading={loading} onItemClick={onItemClick} /> ); };