diff --git a/.changeset/nervous-flowers-hunt.md b/.changeset/nervous-flowers-hunt.md new file mode 100644 index 0000000000..f00ecbc80a --- /dev/null +++ b/.changeset/nervous-flowers-hunt.md @@ -0,0 +1,5 @@ +--- +'@reown/appkit-core': patch +--- + +Set Quote Token Amount to Zero When Source Token is Empty diff --git a/packages/core/src/controllers/SwapController.ts b/packages/core/src/controllers/SwapController.ts index 0ec1100b08..cb025ef337 100644 --- a/packages/core/src/controllers/SwapController.ts +++ b/packages/core/src/controllers/SwapController.ts @@ -494,6 +494,10 @@ export const SwapController = { const toToken = state.toToken const haveSourceTokenAmount = NumberUtil.bigNumber(state.sourceTokenAmount).isGreaterThan(0) + if (!haveSourceTokenAmount) { + this.setToTokenAmount('') + } + if (!toToken || !sourceToken || state.loadingPrices || !haveSourceTokenAmount) { return } diff --git a/packages/core/tests/controllers/SwapController.test.ts b/packages/core/tests/controllers/SwapController.test.ts index ad12eddb8e..5afda8688a 100644 --- a/packages/core/tests/controllers/SwapController.test.ts +++ b/packages/core/tests/controllers/SwapController.test.ts @@ -129,4 +129,14 @@ describe('SwapController', () => { expect(SwapController.state.toTokenAmount).toEqual('') expect(SwapController.state.toTokenPriceInUSD).toEqual(0) }) + + it('should clear to token amount when source token amount is cleared', async () => { + SwapController.setSourceTokenAmount('1.0') + await SwapController.swapTokens() + const toTokenAmount = Number(SwapController.state.toTokenAmount) + expect(toTokenAmount).toBeGreaterThan(0) + SwapController.setSourceTokenAmount('') + await SwapController.swapTokens() + expect(SwapController.state.toTokenAmount).toEqual('') + }) })