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

This commit is contained in:
maciek
2023-06-21 18:21:08 +02:00
parent 08cf3e9f62
commit 49d7ea2e40
14 changed files with 65 additions and 74 deletions
@@ -1,7 +1,7 @@
import * as Schema from '@vegaprotocol/types';
import { testOrderSubmission } from '../support/order-validation';
import { createOrder } from '../support/create-order';
import type { DealTicketOrderSubmission } from '@vegaprotocol/deal-ticket';
import type { OrderObj } from '@vegaprotocol/orders';
describe('must submit order', { tags: '@smoke' }, () => {
// 7002-SORD-039
@@ -22,7 +22,7 @@ describe('must submit order', { tags: '@smoke' }, () => {
// 0003-WTXN-012
// 0003-WTXN-003
cy.mockVegaWalletTransaction();
const order: DealTicketOrderSubmission = {
const order: Omit<OrderObj, 'persist'> = {
marketId: 'market-0',
type: Schema.OrderType.TYPE_MARKET,
side: Schema.Side.SIDE_BUY,
@@ -37,7 +37,7 @@ describe('must submit order', { tags: '@smoke' }, () => {
it('successfully places market sell order', () => {
cy.mockVegaWalletTransaction();
const order: DealTicketOrderSubmission = {
const order: Omit<OrderObj, 'persist'> = {
marketId: 'market-0',
type: Schema.OrderType.TYPE_MARKET,
side: Schema.Side.SIDE_SELL,
@@ -53,7 +53,7 @@ describe('must submit order', { tags: '@smoke' }, () => {
it('successfully places limit buy order', () => {
// 7002-SORD-017
cy.mockVegaWalletTransaction();
const order: DealTicketOrderSubmission = {
const order: Omit<OrderObj, 'persist'> = {
marketId: 'market-0',
type: Schema.OrderType.TYPE_LIMIT,
side: Schema.Side.SIDE_BUY,
@@ -69,7 +69,7 @@ describe('must submit order', { tags: '@smoke' }, () => {
it('successfully places limit sell order', () => {
cy.mockVegaWalletTransaction();
const order: DealTicketOrderSubmission = {
const order: Omit<OrderObj, 'persist'> = {
marketId: 'market-0',
type: Schema.OrderType.TYPE_LIMIT,
side: Schema.Side.SIDE_SELL,
@@ -86,7 +86,7 @@ describe('must submit order', { tags: '@smoke' }, () => {
it('successfully places GTT limit buy order', () => {
cy.mockVegaWalletTransaction();
const expiresAt = new Date(Date.now() + 24 * 60 * 60 * 1000);
const order: DealTicketOrderSubmission = {
const order: Omit<OrderObj, 'persist'> = {
marketId: 'market-0',
type: Schema.OrderType.TYPE_LIMIT,
side: Schema.Side.SIDE_SELL,
@@ -6,7 +6,7 @@ import {
amendMarginAccountBalance,
} from '@vegaprotocol/mock';
import { createOrder } from '../support/create-order';
import type { DealTicketOrderSubmission } from '@vegaprotocol/deal-ticket';
import type { OrderObj } from '@vegaprotocol/orders';
describe(
'account validation',
@@ -94,7 +94,7 @@ describe(
it('must see a prompt to check connected vega wallet to approve transaction', () => {
// 0003-WTXN-002
cy.mockVegaWalletTransaction(1000);
const order: DealTicketOrderSubmission = {
const order: Omit<OrderObj, 'persist'> = {
marketId: 'market-0',
type: Schema.OrderType.TYPE_MARKET,
side: Schema.Side.SIDE_BUY,
@@ -124,7 +124,7 @@ describe(
});
});
const order: DealTicketOrderSubmission = {
const order: Omit<OrderObj, 'persist'> = {
marketId: 'market-0',
type: Schema.OrderType.TYPE_MARKET,
side: Schema.Side.SIDE_BUY,
@@ -160,7 +160,7 @@ describe(
});
});
const order: DealTicketOrderSubmission = {
const order: Omit<OrderObj, 'persist'> = {
marketId: 'market-0',
type: Schema.OrderType.TYPE_MARKET,
side: Schema.Side.SIDE_BUY,
@@ -1,7 +1,7 @@
import * as Schema from '@vegaprotocol/types';
import { testOrderSubmission } from '../support/order-validation';
import type { DealTicketOrderSubmission } from '@vegaprotocol/deal-ticket';
import { createOrder } from '../support/create-order';
import type { OrderObj } from '@vegaprotocol/orders';
const displayTomorrow = () => {
const tomorrow = new Date();
@@ -31,7 +31,7 @@ describe(
it('successfully places limit buy order', () => {
cy.mockVegaWalletTransaction();
const order: DealTicketOrderSubmission = {
const order: Omit<OrderObj, 'persist'> = {
marketId: 'market-0',
type: Schema.OrderType.TYPE_LIMIT,
side: Schema.Side.SIDE_BUY,
@@ -47,7 +47,7 @@ describe(
it('successfully places limit sell order', () => {
cy.mockVegaWalletTransaction();
const order: DealTicketOrderSubmission = {
const order: Omit<OrderObj, 'persist'> = {
marketId: 'market-0',
type: Schema.OrderType.TYPE_LIMIT,
side: Schema.Side.SIDE_SELL,
@@ -63,7 +63,7 @@ describe(
it('successfully places GTT limit buy order', () => {
cy.mockVegaWalletTransaction();
const order: DealTicketOrderSubmission = {
const order: Omit<OrderObj, 'persist'> = {
marketId: 'market-0',
type: Schema.OrderType.TYPE_LIMIT,
side: Schema.Side.SIDE_SELL,
@@ -1,7 +1,7 @@
import * as Schema from '@vegaprotocol/types';
import { testOrderSubmission } from '../support/order-validation';
import type { DealTicketOrderSubmission } from '@vegaprotocol/deal-ticket';
import { createOrder } from '../support/create-order';
import type { OrderObj } from '@vegaprotocol/orders';
const displayTomorrow = () => {
const tomorrow = new Date();
@@ -31,7 +31,7 @@ describe(
it('successfully places limit buy order', () => {
cy.mockVegaWalletTransaction();
const order: DealTicketOrderSubmission = {
const order: Omit<OrderObj, 'persist'> = {
marketId: 'market-0',
type: Schema.OrderType.TYPE_LIMIT,
side: Schema.Side.SIDE_BUY,
@@ -47,7 +47,7 @@ describe(
it('successfully places limit sell order', () => {
cy.mockVegaWalletTransaction();
const order: DealTicketOrderSubmission = {
const order: Omit<OrderObj, 'persist'> = {
marketId: 'market-0',
type: Schema.OrderType.TYPE_LIMIT,
side: Schema.Side.SIDE_SELL,
@@ -63,7 +63,7 @@ describe(
it('successfully places GTT limit buy order', () => {
cy.mockVegaWalletTransaction();
const order: DealTicketOrderSubmission = {
const order: Omit<OrderObj, 'persist'> = {
marketId: 'market-0',
type: Schema.OrderType.TYPE_LIMIT,
side: Schema.Side.SIDE_SELL,
@@ -1,7 +1,7 @@
import * as Schema from '@vegaprotocol/types';
import { testOrderSubmission } from '../support/order-validation';
import type { DealTicketOrderSubmission } from '@vegaprotocol/deal-ticket';
import { createOrder } from '../support/create-order';
import type { OrderObj } from '@vegaprotocol/orders';
const displayTomorrow = () => {
const tomorrow = new Date();
@@ -31,7 +31,7 @@ describe(
it('successfully places limit buy order', () => {
cy.mockVegaWalletTransaction();
const order: DealTicketOrderSubmission = {
const order: Omit<OrderObj, 'persist'> = {
marketId: 'market-0',
type: Schema.OrderType.TYPE_LIMIT,
side: Schema.Side.SIDE_BUY,
@@ -47,7 +47,7 @@ describe(
it('successfully places limit sell order', () => {
cy.mockVegaWalletTransaction();
const order: DealTicketOrderSubmission = {
const order: Omit<OrderObj, 'persist'> = {
marketId: 'market-0',
type: Schema.OrderType.TYPE_LIMIT,
side: Schema.Side.SIDE_SELL,
@@ -63,7 +63,7 @@ describe(
it('successfully places GTT limit buy order', () => {
cy.mockVegaWalletTransaction();
const order: DealTicketOrderSubmission = {
const order: Omit<OrderObj, 'persist'> = {
marketId: 'market-0',
type: Schema.OrderType.TYPE_LIMIT,
side: Schema.Side.SIDE_SELL,
+2 -2
View File
@@ -1,11 +1,11 @@
import type { DealTicketOrderSubmission } from '@vegaprotocol/deal-ticket';
import type { OrderObj } from '@vegaprotocol/orders';
const orderSizeField = 'order-size';
const orderPriceField = 'order-price';
const orderTIFDropDown = 'order-tif';
const placeOrderBtn = 'place-order';
export const createOrder = (order: DealTicketOrderSubmission): void => {
export const createOrder = (order: Omit<OrderObj, 'persist'>): void => {
cy.log('Placing order', order);
const { type, side, size, price, timeInForce, expiresAt } = order;
@@ -6,12 +6,12 @@ import type {
OrderSubmissionBody,
Transaction,
} from '@vegaprotocol/wallet';
import type { DealTicketOrderSubmission } from '@vegaprotocol/deal-ticket';
import { normalizeOrderSubmission } from '@vegaprotocol/deal-ticket';
import type { OrderObj } from '@vegaprotocol/orders';
export const testOrderSubmission = (
order: DealTicketOrderSubmission,
expected?: Partial<DealTicketOrderSubmission>
order: Omit<OrderObj, 'persist'>,
expected?: Partial<OrderObj>
) => {
const expectedOrder = {
...order,
@@ -342,7 +342,7 @@ describe('DealTicket', () => {
expect(
normalizeOrderSubmission({ price: '100' } as unknown as OrderObj, 2, 1)
.price
).toBeUndefined();
).toEqual('');
expect(
normalizeOrderSubmission(
{
@@ -364,7 +364,7 @@ describe('DealTicket', () => {
2,
1
).expiresAt
).toBeUndefined();
).toEqual(BigInt(0));
expect(
normalizeOrderSubmission(
{
@@ -1,5 +1,5 @@
import { t } from '@vegaprotocol/i18n';
import * as Schema from '@vegaprotocol/types';
import { t } from '@vegaprotocol/i18n';
import { memo, useCallback, useEffect, useState, useRef, useMemo } from 'react';
import { Controller } from 'react-hook-form';
import { DealTicketAmount } from './deal-ticket-amount';
@@ -32,6 +32,7 @@ import {
useOpenVolume,
} from '@vegaprotocol/positions';
import { toBigNum, removeDecimal, toNanoSeconds } from '@vegaprotocol/utils';
import type { OrderObj } from '@vegaprotocol/orders';
import { activeOrdersProvider } from '@vegaprotocol/orders';
import { useEstimateFees } from '../../hooks/use-estimate-fees';
import { getDerivedPrice } from '../../utils/get-price';
@@ -52,12 +53,12 @@ import {
useAccountBalance,
} from '@vegaprotocol/accounts';
import { OrderTimeInForce, OrderType } from '@vegaprotocol/types';
import type { DealTicketOrderSubmission } from '../../hooks/use-order-form';
import { useOrderForm } from '../../hooks/use-order-form';
import { useDataProvider } from '@vegaprotocol/data-provider';
import { vega as vegaProtos } from '@vegaprotocol/protos';
export const normalizeOrderSubmission = (
order: DealTicketOrderSubmission,
order: Omit<OrderObj, 'persist'>,
decimalPlaces: number,
positionDecimalPlaces: number
): OrderSubmission => ({
@@ -68,14 +69,20 @@ export const normalizeOrderSubmission = (
price:
order.type === OrderType.TYPE_LIMIT && order.price
? removeDecimal(order.price, decimalPlaces)
: undefined,
: '',
size: BigInt(removeDecimal(order.size, positionDecimalPlaces)),
expiresAt:
expiresAt: BigInt(
order.expiresAt && order.timeInForce === OrderTimeInForce.TIME_IN_FORCE_GTT
? BigInt(toNanoSeconds(order.expiresAt))
: undefined,
postOnly: order.postOnly,
reduceOnly: order.reduceOnly,
? toNanoSeconds(order.expiresAt)
: 0
),
postOnly: Boolean(order.postOnly),
reduceOnly: Boolean(order.reduceOnly),
peggedOrder: {
offset: '',
reference: vegaProtos.PeggedReference.PEGGED_REFERENCE_UNSPECIFIED,
},
reference: '',
});
export interface DealTicketProps {
@@ -159,9 +166,7 @@ export const DealTicket = ({
asset.decimals,
]);
const feeEstimate = useEstimateFees(
normalizedOrder && { ...normalizedOrder, price }
);
const feeEstimate = useEstimateFees(order && { ...order, price });
const { data: activeOrders } = useDataProvider({
dataProvider: activeOrdersProvider,
variables: { partyId: pubKey || '' },
@@ -269,7 +274,7 @@ export const DealTicket = ({
}, [order]);
const onSubmit = useCallback(
(order: DealTicketOrderSubmission) => {
(order: Omit<OrderObj, 'persist'>) => {
const now = new Date().getTime();
if (lastSubmitTime.current && now - lastSubmitTime.current < 1000) {
return;
@@ -1,14 +1,9 @@
import type { OrderSubmission } from '@vegaprotocol/wallet';
import {
useVegaWallet,
SideRevertMap,
TimeInForceRevertMap,
TypeRevertMap,
} from '@vegaprotocol/wallet';
import { useVegaWallet } from '@vegaprotocol/wallet';
import { useEstimateFeesQuery } from './__generated__/EstimateOrder';
import type { OrderObj } from '@vegaprotocol/orders';
export const useEstimateFees = (order?: OrderSubmission) => {
export const useEstimateFees = (order?: Omit<OrderObj, 'persist'>) => {
const { pubKey } = useVegaWallet();
const { data } = useEstimateFeesQuery({
@@ -16,10 +11,10 @@ export const useEstimateFees = (order?: OrderSubmission) => {
marketId: order.marketId,
partyId: pubKey || '',
price: order.price,
size: String(order.size),
side: SideRevertMap[order.side],
timeInForce: TimeInForceRevertMap[order.timeInForce],
type: TypeRevertMap[order.type],
size: order.size,
side: order.side,
timeInForce: order.timeInForce,
type: order.type,
},
fetchPolicy: 'no-cache',
skip: !pubKey || !order?.size || !order?.price,
+1 -8
View File
@@ -3,16 +3,11 @@ import type { OrderObj } from '@vegaprotocol/orders';
import { getDefaultOrder, useOrder } from '@vegaprotocol/orders';
import { useEffect } from 'react';
import { useForm } from 'react-hook-form';
import type { Exact } from 'type-fest';
export type OrderFormFields = OrderObj & {
summary: string;
};
export type DealTicketOrderSubmission = Omit<OrderObj, 'persist'> & {
reference?: string;
};
/**
* Connects the order store to a react-hook-form instance. Any time a field
* changes in the store the form will be updated so that validation rules
@@ -54,9 +49,7 @@ export const useOrderForm = (marketId: string) => {
}
}, [order, isSubmitted, getValues, setValue]);
const handleSubmitWrapper = (
cb: <T>(o: Exact<DealTicketOrderSubmission, T>) => void
) => {
const handleSubmitWrapper = (cb: (o: Omit<OrderObj, 'persist'>) => void) => {
return handleSubmit(() => {
// remove the persist key from the order in the store, the wallet will reject
// an order that contains unrecognized additional keys
+1 -11
View File
@@ -3,7 +3,7 @@ import type { SetOptional } from 'type-fest';
import type { vega as vegaProtos } from '@vegaprotocol/protos';
import type { RecurringTransfer } from '@vegaprotocol/protos/dist/vega/commands/v1/RecurringTransfer';
export type OriginalOrderSubmission =
export type OrderSubmission =
vegaProtos.commands.v1.OrderSubmission.OrderSubmission;
export type OriginalOrderCancellation =
vegaProtos.commands.v1.OrderCancellation.OrderCancellation;
@@ -238,16 +238,6 @@ export interface ProposalSubmission {
export type WithdrawSubmission = Omit<OriginalWithdrawSubmission, 'ext'> &
WithdrawExt;
export type OrderSubmission = SetOptional<
OriginalOrderSubmission,
| 'price'
| 'expiresAt'
| 'reference'
| 'peggedOrder'
| 'postOnly'
| 'reduceOnly'
>;
export type OrderAmendment = SetOptional<
OriginalOrderAmendment,
'price' | 'sizeDelta' | 'expiresAt' | 'peggedOffset' | 'peggedReference'
@@ -128,6 +128,14 @@ const submitOrder: VegaStoredTxState = {
timeInForce: vegaProtos.Order.TimeInForce.TIME_IN_FORCE_FOK,
type: vegaProtos.Order.Type.TYPE_MARKET,
price: '1234',
expiresAt: BigInt(0),
postOnly: false,
reduceOnly: false,
peggedOrder: {
offset: '',
reference: vegaProtos.PeggedReference.PEGGED_REFERENCE_UNSPECIFIED,
},
reference: '',
},
},
status: VegaTxStatus.Default,
+1 -1
View File
@@ -3,7 +3,7 @@ export default {
displayName: 'withdraws',
preset: '../../jest.preset.js',
transform: {
//'^(?!.*\\.(js|jsx|ts|tsx|css|json)$)': '@nrwl/react/plugins/jest',
'^(?!.*\\.(js|jsx|ts|tsx|css|json)$)': '@nrwl/react/plugins/jest',
'^.+\\.[tj]sx?$': 'babel-jest',
},
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'],