From 5c873de1d35fef7083a3f5859780c024e67a12da Mon Sep 17 00:00:00 2001 From: jorbuedo Date: Wed, 27 Sep 2023 23:09:53 +0200 Subject: [PATCH] Fix non ada pair selection --- packages/swap/package.json | 1 + .../translators/reactjs/state/state.test.ts | 26 ++++++++++++++ .../src/translators/reactjs/state/state.ts | 36 +++++++++++-------- 3 files changed, 49 insertions(+), 14 deletions(-) diff --git a/packages/swap/package.json b/packages/swap/package.json index 663bf2e66a..02d2295676 100644 --- a/packages/swap/package.json +++ b/packages/swap/package.json @@ -48,6 +48,7 @@ "scripts": { "build": "yarn tsc && yarn lint && yarn test --ci --silent && yarn clean && bob build && yarn flow", "clean": "del-cli lib", + "dev": "yarn clean && bob build", "dgraph": "depcruise src --include-only \"^src\" --output-type dot | dot -T svg > dependency-graph.svg", "flow": ". ./scripts/flowgen.sh", "lint": "eslint \"**/*.{js,ts,tsx}\"", diff --git a/packages/swap/src/translators/reactjs/state/state.test.ts b/packages/swap/src/translators/reactjs/state/state.test.ts index 711a0678e0..b7b39578f5 100644 --- a/packages/swap/src/translators/reactjs/state/state.test.ts +++ b/packages/swap/src/translators/reactjs/state/state.test.ts @@ -46,6 +46,19 @@ describe('State Actions', () => { expect(state).toEqual(expectedState) }) + it('SellAmountChanged zero', () => { + const action: SwapCreateOrderAction = { + type: SwapCreateOrderActionType.SellAmountChanged, + amount: {quantity: '0', tokenId: 'someTokenId'}, + } + const expectedState = produce(mockSwapStateDefault, (draft) => { + draft.createOrder.amounts.sell = action.amount + draft.createOrder.amounts.buy.quantity = '0' + }) + const state = combinedSwapReducers(mockSwapStateDefault, action) + expect(state).toEqual(expectedState) + }) + it('SellAmountChanged market', () => { const action: SwapCreateOrderAction = { type: SwapCreateOrderActionType.SellAmountChanged, @@ -92,6 +105,19 @@ describe('State Actions', () => { expect(state).toEqual(defaultSwapState) }) + it('BuyAmountChanged zero', () => { + const action: SwapCreateOrderAction = { + type: SwapCreateOrderActionType.BuyAmountChanged, + amount: {quantity: '0', tokenId: 'someTokenId'}, + } + const expectedState = produce(mockSwapStateDefault, (draft) => { + draft.createOrder.amounts.buy = action.amount + draft.createOrder.amounts.sell.quantity = `0` + }) + const state = combinedSwapReducers(mockSwapStateDefault, action) + expect(state).toEqual(expectedState) + }) + it('BuyAmountChanged market', () => { const action: SwapCreateOrderAction = { type: SwapCreateOrderActionType.BuyAmountChanged, diff --git a/packages/swap/src/translators/reactjs/state/state.ts b/packages/swap/src/translators/reactjs/state/state.ts index 0dcbb66521..1bbd3b6e89 100644 --- a/packages/swap/src/translators/reactjs/state/state.ts +++ b/packages/swap/src/translators/reactjs/state/state.ts @@ -187,23 +187,31 @@ const createOrderReducer = ( break case SwapCreateOrderActionType.SellAmountChanged: draft.createOrder.amounts.sell = action.amount - draft.createOrder.amounts.buy = getBuyAmount( - state.createOrder.selectedPool, - action.amount, - state.createOrder.type === 'limit' - ? state.createOrder.limitPrice - : undefined, - ) + if (Quantities.isZero(action.amount.quantity)) { + draft.createOrder.amounts.buy.quantity = Quantities.zero + } else { + draft.createOrder.amounts.buy = getBuyAmount( + state.createOrder.selectedPool, + action.amount, + state.createOrder.type === 'limit' + ? state.createOrder.limitPrice + : undefined, + ) + } break case SwapCreateOrderActionType.BuyAmountChanged: draft.createOrder.amounts.buy = action.amount - draft.createOrder.amounts.sell = getSellAmount( - state.createOrder.selectedPool, - action.amount, - state.createOrder.type === 'limit' - ? state.createOrder.limitPrice - : undefined, - ) + if (Quantities.isZero(action.amount.quantity)) { + draft.createOrder.amounts.sell.quantity = Quantities.zero + } else { + draft.createOrder.amounts.sell = getSellAmount( + state.createOrder.selectedPool, + action.amount, + state.createOrder.type === 'limit' + ? state.createOrder.limitPrice + : undefined, + ) + } break case SwapCreateOrderActionType.SelectedPoolChanged: draft.createOrder.selectedPool = action.pool