From fbf21e9cb82ca332a87d6513b08be1d929ce0bb7 Mon Sep 17 00:00:00 2001 From: macqbat Date: Thu, 20 Oct 2022 09:01:01 +0200 Subject: [PATCH] chore: fix for persist force value selection after change of order type (#1779) * chore: fix for persist force value selection after change of order type * chore: fix for persist force value selection after change of order type fix some int test * chore: fix for persist force value selection after change of order fast fixes Co-authored-by: maciek --- .../src/integration/trading-deal-ticket.cy.ts | 20 +++++++++++++++ .../components/deal-ticket/deal-ticket.tsx | 13 +--------- .../deal-ticket/time-in-force-selector.tsx | 25 +++++++++++++++++-- 3 files changed, 44 insertions(+), 14 deletions(-) diff --git a/apps/trading-e2e/src/integration/trading-deal-ticket.cy.ts b/apps/trading-e2e/src/integration/trading-deal-ticket.cy.ts index 932763ff8..388e55930 100644 --- a/apps/trading-e2e/src/integration/trading-deal-ticket.cy.ts +++ b/apps/trading-e2e/src/integration/trading-deal-ticket.cy.ts @@ -326,6 +326,26 @@ describe('limit order validations', { tags: '@smoke' }, () => { ); }); }); + + it('selections should be remembered', () => { + cy.getByTestId(orderTIFDropDown).select('TIME_IN_FORCE_GTT'); + cy.getByTestId(toggleMarket).click(); + cy.get(`[data-testid=${orderTIFDropDown}] option:selected`).should( + 'have.text', + TIFlist.filter((item) => item.code === 'IOC')[0].text + ); + cy.getByTestId(orderTIFDropDown).select('TIME_IN_FORCE_FOK'); + cy.getByTestId(toggleLimit).click(); + cy.get(`[data-testid=${orderTIFDropDown}] option:selected`).should( + 'have.text', + TIFlist.filter((item) => item.code === 'GTT')[0].text + ); + cy.getByTestId(toggleMarket).click(); + cy.get(`[data-testid=${orderTIFDropDown}] option:selected`).should( + 'have.text', + TIFlist.filter((item) => item.code === 'FOK')[0].text + ); + }); }); }); diff --git a/libs/deal-ticket/src/components/deal-ticket/deal-ticket.tsx b/libs/deal-ticket/src/components/deal-ticket/deal-ticket.tsx index dcba7b590..a747e2043 100644 --- a/libs/deal-ticket/src/components/deal-ticket/deal-ticket.tsx +++ b/libs/deal-ticket/src/components/deal-ticket/deal-ticket.tsx @@ -45,7 +45,6 @@ export const DealTicket = ({ handleSubmit, watch, formState: { errors }, - setValue, } = useForm({ mode: 'onChange', defaultValues: getDefaultOrder(market), @@ -100,17 +99,7 @@ export const DealTicket = ({ name="type" control={control} render={({ field }) => ( - { - if (type === OrderType.TYPE_LIMIT) { - setValue('timeInForce', OrderTimeInForce.TIME_IN_FORCE_GTC); - } else { - setValue('timeInForce', OrderTimeInForce.TIME_IN_FORCE_IOC); - } - field.onChange(type); - }} - /> + )} /> { } }; +type PossibleOrderKeys = Exclude< + Schema.OrderType, + Schema.OrderType.TYPE_NETWORK +>; +type PrevSelectedValue = { + [key in PossibleOrderKeys]: Schema.OrderTimeInForce; +}; + export const TimeInForceSelector = ({ value, orderType, onSelect, }: TimeInForceSelectorProps) => { + const [prevValue, setPrevValue] = useState({ + [Schema.OrderType.TYPE_LIMIT]: Schema.OrderTimeInForce.TIME_IN_FORCE_GTC, + [Schema.OrderType.TYPE_MARKET]: Schema.OrderTimeInForce.TIME_IN_FORCE_IOC, + }); const options = orderType === Schema.OrderType.TYPE_LIMIT ? Object.entries(Schema.OrderTimeInForce) @@ -41,13 +54,21 @@ export const TimeInForceSelector = ({ timeInForce === Schema.OrderTimeInForce.TIME_IN_FORCE_FOK || timeInForce === Schema.OrderTimeInForce.TIME_IN_FORCE_IOC ); - + useEffect(() => { + onSelect(prevValue[orderType as PossibleOrderKeys]); + }, [onSelect, prevValue, orderType]); return (