chore: use generated types from vega protos - get rid of convertDealTicketToOrderAmendment

This commit is contained in:
maciek
2023-06-19 13:27:52 +02:00
parent 6a2319c20d
commit 2152c7c73c
3 changed files with 18 additions and 40 deletions
@@ -11,6 +11,7 @@ import { forwardRef } from 'react';
import type { VegaWalletContextShape } from '@vegaprotocol/wallet';
import { VegaWalletContext } from '@vegaprotocol/wallet';
import { MockedProvider } from '@apollo/client/testing';
import { vega as vegaProtos } from '@vegaprotocol/protos';
// @ts-ignore OrderList is read only but we need to override with the forwardRef to
// avoid warnings about padding refs
@@ -63,9 +64,9 @@ describe('normalizeOrderAmendment', () => {
const orderAmendment = normalizeOrderAmendment(order, market, '1', '1');
expect(orderAmendment.orderId).toEqual('123');
expect(orderAmendment.marketId).toEqual('456');
expect(orderAmendment.expiresAt).toEqual('1640995200000000000');
expect(orderAmendment.expiresAt).toEqual(BigInt('1640995200000000000'));
expect(orderAmendment.timeInForce).toEqual(
Schema.OrderTimeInForce.TIME_IN_FORCE_GTT
vegaProtos.Order.TimeInForce.TIME_IN_FORCE_GTT
);
});
@@ -84,9 +85,9 @@ describe('normalizeOrderAmendment', () => {
});
it.each([
['9', 1, -10],
['90', 2, 8900],
['0.001', 8, 99900],
['9', 1, BigInt(-10)],
['90', 2, BigInt(8900)],
['0.001', 8, BigInt(99900)],
])('sets and formats size delta', (size, positionDecimalPlaces, output) => {
const orderAmendment = normalizeOrderAmendment(
order,
@@ -3,7 +3,6 @@ import { useCallback, useRef, useState } from 'react';
import { Button } from '@vegaprotocol/ui-toolkit';
import type { AgGridReact } from 'ag-grid-react';
import type { GridReadyEvent, FilterChangedEvent } from 'ag-grid-community';
import { OrderListTable } from '../order-list/order-list';
import { useHasAmendableOrder } from '../../order-hooks/use-has-amendable-order';
import { useBottomPlaceholder } from '@vegaprotocol/datagrid';
@@ -51,49 +50,28 @@ export interface OrderListManagerProps {
storeKey?: string;
}
export interface DealTicketOrderAmendment {
marketId: string;
orderId: string;
reference?: string;
timeInForce: Schema.OrderTimeInForce;
sizeDelta?: number;
price?: string;
expiresAt?: string;
}
export const normalizeOrderAmendment = <T extends Exact<OrderAmendment, T>>(
order: Pick<Order, 'id' | 'timeInForce' | 'size' | 'expiresAt'>,
market: Pick<Schema.Market, 'id' | 'decimalPlaces' | 'positionDecimalPlaces'>,
price: string,
size: string
): DealTicketOrderAmendment => ({
): OrderAmendment => ({
orderId: order.id,
marketId: market.id,
price: removeDecimal(price, market.decimalPlaces),
timeInForce: order.timeInForce,
sizeDelta: size
? new BigNumber(removeDecimal(size, market.positionDecimalPlaces))
.minus(order.size)
.toNumber()
: 0,
timeInForce: TimeInForceMap[order.timeInForce],
sizeDelta: BigInt(
size
? new BigNumber(removeDecimal(size, market.positionDecimalPlaces))
.minus(order.size)
.toNumber()
: 0
),
expiresAt: order.expiresAt
? toNanoSeconds(order.expiresAt) // Wallet expects timestamp in nanoseconds
? BigInt(toNanoSeconds(order.expiresAt)) // Wallet expects timestamp in nanoseconds
: undefined,
});
export const convertDealTicketToOrderAmendment = (
dealTicketOrder: DealTicketOrderAmendment
) => {
return {
...dealTicketOrder,
expiresAt: dealTicketOrder.expiresAt
? BigInt(dealTicketOrder.expiresAt)
: null,
timeInForce: TimeInForceMap[dealTicketOrder.timeInForce],
sizeDelta: BigInt(dealTicketOrder.sizeDelta || 0),
} as OrderAmendment;
};
const CancelAllOrdersButton = ({ onClick }: { onClick: () => void }) => (
<div className="dark:bg-black/75 bg-white/75 h-auto flex justify-end px-[11px] py-2 absolute bottom-0 right-3 rounded">
<Button
@@ -239,8 +217,7 @@ export const OrderListManager = ({
};
create(
{
orderAmendment:
convertDealTicketToOrderAmendment(orderAmendment),
orderAmendment,
},
originalOrder
);
@@ -20,7 +20,7 @@ const mockWithdrawAsset = {
delay: 10,
handleSelectAsset: jest.fn(),
};
const mockUseWithdrawAsset = jest.fn(() => mockWithdrawAsset);
jest.mock('./use-withdraw-asset', () => ({
useWithdrawAsset: () => mockWithdrawAsset,
}));