chore: use generated types from vega protos - get rid of DealTicketSubmission
This commit is contained in:
@@ -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,
|
||||
|
||||
+4
-4
@@ -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,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,
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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'],
|
||||
|
||||
Reference in New Issue
Block a user