2022-09-22 11:09:12 +00:00
|
|
|
import React, { useRef, useMemo } from 'react';
|
2022-04-06 17:48:05 +00:00
|
|
|
import { produce } from 'immer';
|
|
|
|
import merge from 'lodash/merge';
|
|
|
|
import { AsyncRenderer } from '@vegaprotocol/ui-toolkit';
|
|
|
|
import { useDataProvider, addSummaryRows } from '@vegaprotocol/react-helpers';
|
chore: stagnet3 api updates (#1321)
* chore: update account, fills and orders subscriptions in data providers
* chore: update account, fills and orders subscriptions in data providers
* fixing console-lite
* fixing types in general - regen
* chore: update account, fills and orders subscriptions in data providers
* fixed console-lite unit tests, uncommented quote name
* chore: update account, fills and orders subscriptions in data providers
* type aligning of assets and proposals
* fixes liquidity data provider
* fixed accounts build errors and unit tests
* regen types, removed market name
* regen types
* fixed positions
* chore: handle updates in derived market provider, update orders
* removed taker fee mapping (renamed to maker fee)
* chore: update account, fills and orders subscriptions in data providers
* chore: update account, fills and orders subscriptions in data providers
* chore: fix Order type
* chore: fix possible null types
* chore: revert order-list.stories.tsx
* chore: derivedDataProvider fixes
* fills unit tests fixes
* orders unit tests fixes
* added eslint ingore for generated files in liquidity
* added unique key to the list element of simple market toolbar
* changed main-branch-name to develop for pr workflows
* removed redundant waitFor
* increased test timeout to 10s
* removed mocked response
* chore: disable simple market list tests
* chore: fix e2e projects mock types
* feat: [subscription-update] - uncomment some console-lite tests
* cypress: trading-accounts
* chore: replace market candles with candlesConnection
* chore: ignore gql errors, to be reverted after candlesConnectio n will be fixed
* feat: [subscription-update] - improve wrongly renamed hook
* feat: [subscription-update] - improve wrongly renamed hook
* feat: [subscription-update] - improve wrongly renamed hook 3
* chore: add pagination hangdling to derived data provier
* cypress: trading-fills
* feat: [stagnet3 api update] - remove redundant command in tests
* feat: [stagnet3 api update] - remove redundant command in tests
* chore: fix trading orders e2e tests
* chore: fix console lite e2e mocks
* chore: fix market-trade tests
* chore: use markets only in market selector, change Instrument cache policy
* chore: fix market-selector tests
* feat: [subscription-update] - improve ag grid conf for unit tests
* feat: [subscription-update] - improve ag grid conf for unit tests
* chore: fix candle types in console lite market mocks
* chore: revert error policy ignore
* chore: revert jest timeout
* chore: remove unused AccountFields
* chore: revert remove unused AccountFields
* chore: simplify node subscription probe
* chore: remove unused generated types in candles-chart
* chore: improve useMarketsList mock
* feat: [subscription-update] - increase jest timeout
* feat: [subscription-update] - fix jest timeout
* feat: [subscription-update] - fix jest timeout
* feat: [subscription-update] - try to fix failing test again
* chore: fix candles-chart types
* feat: [subscription-update] - temporary skip failing test
* feat: [subscription-update] - temporary skip failing test
* feat: [subscription-update] - temporary skip failing test
* feat: [subscription-update] - fix failling int test
* feat: [subscription-update] - try to restore commented unit tests
* feat: [subscription-update] - try to restore commented unit tests
* feat: [subscription-update] - improve fixed unit tests
Co-authored-by: asiaznik <artur@vegaprotocol.io>
Co-authored-by: maciek <maciek@vegaprotocol.io>
2022-09-20 15:24:28 +00:00
|
|
|
import type {
|
|
|
|
AccountFieldsFragment,
|
|
|
|
AccountEventsSubscription,
|
|
|
|
} from './__generated___/Accounts';
|
2022-04-06 17:48:05 +00:00
|
|
|
|
|
|
|
import type { AgGridReact } from 'ag-grid-react';
|
|
|
|
import {
|
|
|
|
AccountsTable,
|
|
|
|
getGroupId,
|
|
|
|
getGroupSummaryRow,
|
|
|
|
} from './accounts-table';
|
|
|
|
import { accountsDataProvider, getId } from './accounts-data-provider';
|
|
|
|
|
|
|
|
interface AccountsManagerProps {
|
|
|
|
partyId: string;
|
|
|
|
}
|
|
|
|
|
2022-09-22 11:09:12 +00:00
|
|
|
export const accountsManagerUpdate =
|
|
|
|
(gridRef: React.RefObject<AgGridReact>) =>
|
|
|
|
({ delta: deltas }: { delta: AccountEventsSubscription['accounts'] }) => {
|
|
|
|
const update: AccountFieldsFragment[] = [];
|
|
|
|
const add: AccountFieldsFragment[] = [];
|
|
|
|
if (!gridRef.current?.api) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
const api = gridRef.current.api;
|
|
|
|
deltas.forEach((delta) => {
|
|
|
|
const rowNode = api.getRowNode(getId(delta));
|
|
|
|
if (rowNode) {
|
|
|
|
const updatedData = produce<AccountFieldsFragment>(
|
|
|
|
rowNode.data,
|
|
|
|
(draft: AccountFieldsFragment) => {
|
|
|
|
merge(draft, delta);
|
2022-04-06 17:48:05 +00:00
|
|
|
}
|
|
|
|
);
|
2022-09-22 11:09:12 +00:00
|
|
|
if (updatedData !== rowNode.data) {
|
|
|
|
update.push(updatedData);
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
// #TODO handle new account (or leave it to data provider to handle it)
|
2022-04-06 17:48:05 +00:00
|
|
|
}
|
2022-09-22 11:09:12 +00:00
|
|
|
});
|
|
|
|
if (update.length || add.length) {
|
|
|
|
gridRef.current.api.applyTransactionAsync({
|
|
|
|
update,
|
|
|
|
add,
|
|
|
|
addIndex: 0,
|
|
|
|
});
|
|
|
|
}
|
|
|
|
if (add.length) {
|
|
|
|
addSummaryRows(
|
|
|
|
gridRef.current.api,
|
|
|
|
gridRef.current.columnApi,
|
|
|
|
getGroupId,
|
|
|
|
getGroupSummaryRow
|
|
|
|
);
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
};
|
|
|
|
|
|
|
|
export const AccountsManager = ({ partyId }: AccountsManagerProps) => {
|
|
|
|
const gridRef = useRef<AgGridReact | null>(null);
|
|
|
|
const variables = useMemo(() => ({ partyId }), [partyId]);
|
2022-09-23 05:51:18 +00:00
|
|
|
const update = useMemo(() => accountsManagerUpdate(gridRef), []);
|
2022-04-06 17:48:05 +00:00
|
|
|
const { data, error, loading } = useDataProvider<
|
2022-09-09 15:14:48 +00:00
|
|
|
AccountFieldsFragment[],
|
chore: stagnet3 api updates (#1321)
* chore: update account, fills and orders subscriptions in data providers
* chore: update account, fills and orders subscriptions in data providers
* fixing console-lite
* fixing types in general - regen
* chore: update account, fills and orders subscriptions in data providers
* fixed console-lite unit tests, uncommented quote name
* chore: update account, fills and orders subscriptions in data providers
* type aligning of assets and proposals
* fixes liquidity data provider
* fixed accounts build errors and unit tests
* regen types, removed market name
* regen types
* fixed positions
* chore: handle updates in derived market provider, update orders
* removed taker fee mapping (renamed to maker fee)
* chore: update account, fills and orders subscriptions in data providers
* chore: update account, fills and orders subscriptions in data providers
* chore: fix Order type
* chore: fix possible null types
* chore: revert order-list.stories.tsx
* chore: derivedDataProvider fixes
* fills unit tests fixes
* orders unit tests fixes
* added eslint ingore for generated files in liquidity
* added unique key to the list element of simple market toolbar
* changed main-branch-name to develop for pr workflows
* removed redundant waitFor
* increased test timeout to 10s
* removed mocked response
* chore: disable simple market list tests
* chore: fix e2e projects mock types
* feat: [subscription-update] - uncomment some console-lite tests
* cypress: trading-accounts
* chore: replace market candles with candlesConnection
* chore: ignore gql errors, to be reverted after candlesConnectio n will be fixed
* feat: [subscription-update] - improve wrongly renamed hook
* feat: [subscription-update] - improve wrongly renamed hook
* feat: [subscription-update] - improve wrongly renamed hook 3
* chore: add pagination hangdling to derived data provier
* cypress: trading-fills
* feat: [stagnet3 api update] - remove redundant command in tests
* feat: [stagnet3 api update] - remove redundant command in tests
* chore: fix trading orders e2e tests
* chore: fix console lite e2e mocks
* chore: fix market-trade tests
* chore: use markets only in market selector, change Instrument cache policy
* chore: fix market-selector tests
* feat: [subscription-update] - improve ag grid conf for unit tests
* feat: [subscription-update] - improve ag grid conf for unit tests
* chore: fix candle types in console lite market mocks
* chore: revert error policy ignore
* chore: revert jest timeout
* chore: remove unused AccountFields
* chore: revert remove unused AccountFields
* chore: simplify node subscription probe
* chore: remove unused generated types in candles-chart
* chore: improve useMarketsList mock
* feat: [subscription-update] - increase jest timeout
* feat: [subscription-update] - fix jest timeout
* feat: [subscription-update] - fix jest timeout
* feat: [subscription-update] - try to fix failing test again
* chore: fix candles-chart types
* feat: [subscription-update] - temporary skip failing test
* feat: [subscription-update] - temporary skip failing test
* feat: [subscription-update] - temporary skip failing test
* feat: [subscription-update] - fix failling int test
* feat: [subscription-update] - try to restore commented unit tests
* feat: [subscription-update] - try to restore commented unit tests
* feat: [subscription-update] - improve fixed unit tests
Co-authored-by: asiaznik <artur@vegaprotocol.io>
Co-authored-by: maciek <maciek@vegaprotocol.io>
2022-09-20 15:24:28 +00:00
|
|
|
AccountEventsSubscription['accounts']
|
2022-07-05 13:33:50 +00:00
|
|
|
>({ dataProvider: accountsDataProvider, update, variables });
|
2022-04-06 17:48:05 +00:00
|
|
|
return (
|
|
|
|
<AsyncRenderer loading={loading} error={error} data={data}>
|
2022-04-26 15:26:28 +00:00
|
|
|
<AccountsTable ref={gridRef} data={data} />
|
2022-04-06 17:48:05 +00:00
|
|
|
</AsyncRenderer>
|
|
|
|
);
|
|
|
|
};
|