Compare commits

...
3 changed files with 27 additions and 8 deletions
+22 -3
View File
@@ -10,7 +10,8 @@ import type { AccountFields } from './accounts-data-provider';
import { aggregatedAccountsDataProvider } from './accounts-data-provider'; import { aggregatedAccountsDataProvider } from './accounts-data-provider';
import type { PinnedAsset } from './accounts-table'; import type { PinnedAsset } from './accounts-table';
import { AccountTable } from './accounts-table'; import { AccountTable } from './accounts-table';
import type { RowHeightParams } from 'ag-grid-community'; import type { RowClassParams, RowHeightParams } from 'ag-grid-community';
import classNames from 'classnames';
interface AccountManagerProps { interface AccountManagerProps {
partyId: string; partyId: string;
@@ -30,11 +31,15 @@ export const AccountManager = ({
pinnedAsset, pinnedAsset,
}: AccountManagerProps) => { }: AccountManagerProps) => {
const gridRef = useRef<AgGridReact | null>(null); const gridRef = useRef<AgGridReact | null>(null);
const variables = useMemo(() => ({ partyId }), [partyId]); const variables = useMemo(
() => ({ partyId, pinnedAsset }),
[partyId, pinnedAsset]
);
const { data, loading, error, reload } = useDataProvider({ const { data, loading, error, reload } = useDataProvider({
dataProvider: aggregatedAccountsDataProvider, dataProvider: aggregatedAccountsDataProvider,
variables, variables,
}); });
const setId = useCallback( const setId = useCallback(
(data: AccountFields) => ({ (data: AccountFields) => ({
...data, ...data,
@@ -51,11 +56,24 @@ export const AccountManager = ({
(params: RowHeightParams) => (params.node.rowPinned ? 32 : 22), (params: RowHeightParams) => (params.node.rowPinned ? 32 : 22),
[] []
); );
const getRowClass = useCallback(
({ data: rowData }: RowClassParams) => {
const currentPinnedAssetRow = data?.find(
(row) => row.asset.id === pinnedAsset?.id
);
const shouldHighlight =
rowData?.asset.id === pinnedAsset?.id && currentPinnedAssetRow;
return classNames({ '!bg-vega-yellow !text-black': shouldHighlight });
},
[pinnedAsset?.id, data]
);
return ( return (
<div className="relative h-full"> <div className="relative h-full">
<AccountTable <AccountTable
ref={gridRef} ref={gridRef}
rowData={error ? [] : data} rowData={error ? [] : data ?? []}
onClickAsset={onClickAsset} onClickAsset={onClickAsset}
onClickDeposit={onClickDeposit} onClickDeposit={onClickDeposit}
onClickWithdraw={onClickWithdraw} onClickWithdraw={onClickWithdraw}
@@ -63,6 +81,7 @@ export const AccountManager = ({
suppressLoadingOverlay suppressLoadingOverlay
suppressNoRowsOverlay suppressNoRowsOverlay
pinnedAsset={pinnedAsset} pinnedAsset={pinnedAsset}
getRowClass={getRowClass}
getRowHeight={getRowHeight} getRowHeight={getRowHeight}
{...bottomPlaceholderProps} {...bottomPlaceholderProps}
/> />
+3 -4
View File
@@ -91,11 +91,10 @@ export const AccountTable = forwardRef<AgGridReact, AccountTableProps>(
({ onClickAsset, onClickWithdraw, onClickDeposit, ...props }, ref) => { ({ onClickAsset, onClickWithdraw, onClickDeposit, ...props }, ref) => {
const [openBreakdown, setOpenBreakdown] = useState(false); const [openBreakdown, setOpenBreakdown] = useState(false);
const [row, setRow] = useState<AccountFields>(); const [row, setRow] = useState<AccountFields>();
const pinnedAssetId = props.pinnedAsset?.id;
const pinnedAssetRow = useMemo(() => { const pinnedAssetRow = useMemo(() => {
const currentPinnedAssetRow = props.rowData?.find( const currentPinnedAssetRow = props.rowData?.find(
(row) => row.asset.id === pinnedAssetId (row) => row.asset.id === props.pinnedAsset?.id
); );
if (!currentPinnedAssetRow) { if (!currentPinnedAssetRow) {
if (props.pinnedAsset) { if (props.pinnedAsset) {
@@ -109,7 +108,7 @@ export const AccountTable = forwardRef<AgGridReact, AccountTableProps>(
} }
} }
return undefined; return undefined;
}, [pinnedAssetId, props.pinnedAsset, props.rowData]); }, [props.pinnedAsset, props.rowData]);
return ( return (
<> <>
@@ -245,7 +244,7 @@ export const AccountTable = forwardRef<AgGridReact, AccountTableProps>(
if (!data) return null; if (!data) return null;
else { else {
if ( if (
data.asset.id === pinnedAssetId && data.asset.id === props.pinnedAsset?.id &&
new BigNumber(data.total).isLessThanOrEqualTo(0) new BigNumber(data.total).isLessThanOrEqualTo(0)
) { ) {
return ( return (
+2 -1
View File
@@ -23,7 +23,8 @@
"echo $NX_TENDERMINT_URL", "echo $NX_TENDERMINT_URL",
"echo $NX_TENDERMINT_WEBSOCKET_URL", "echo $NX_TENDERMINT_WEBSOCKET_URL",
"echo $NX_USE_ENV_OVERRIDES", "echo $NX_USE_ENV_OVERRIDES",
"echo $NX_ETHEREUM_PROVIDER_URL" "echo $NX_ETHEREUM_PROVIDER_URL",
"echo %NX_VEGA_CONFIG_URL"
] ]
} }
} }