import { t, useDataProvider, updateGridData, } from '@vegaprotocol/react-helpers'; import { AsyncRenderer } from '@vegaprotocol/ui-toolkit'; import type { AgGridReact } from 'ag-grid-react'; import { useRef, useMemo, useCallback, memo } from 'react'; import type { AccountFields } from './accounts-data-provider'; import { aggregatedAccountsDataProvider } from './accounts-data-provider'; import type { GetRowsParams } from './accounts-table'; import { AccountTable } from './accounts-table'; interface AccountManagerProps { partyId: string; onClickAsset: (assetId: string) => void; onClickWithdraw?: (assetId?: string) => void; onClickDeposit?: (assetId?: string) => void; } export const AccountManager = ({ onClickAsset, onClickWithdraw, onClickDeposit, partyId, }: AccountManagerProps) => { const gridRef = useRef(null); const dataRef = useRef(null); const variables = useMemo(() => ({ partyId }), [partyId]); const update = useCallback( ({ data }: { data: AccountFields[] | null }) => { return updateGridData(dataRef, data, gridRef); }, [gridRef] ); const { data, loading, error } = useDataProvider({ dataProvider: aggregatedAccountsDataProvider, update, variables, }); const getRows = useCallback( async ({ successCallback, startRow, endRow }: GetRowsParams) => { const rowsThisBlock = dataRef.current ? dataRef.current.slice(startRow, endRow) : []; const lastRow = dataRef.current ? dataRef.current.length : 0; successCallback(rowsThisBlock, lastRow); }, [] ); return (
!(data && data.length)} error={error} loading={loading} noDataMessage={t('No accounts')} />
); }; export default memo(AccountManager);