Commit 1c7c9319 authored by Zach Pomerantz's avatar Zach Pomerantz Committed by GitHub

fix: default input to native currency (#3456)

* fix: default to native

* chore: fix import
parent 0713f730
......@@ -3,6 +3,7 @@ import { nativeOnChain } from 'constants/tokens'
import { useUpdateAtom } from 'jotai/utils'
import useActiveWeb3React from 'lib/hooks/useActiveWeb3React'
import { useToken } from 'lib/hooks/useCurrency'
import useNativeCurrency from 'lib/hooks/useNativeCurrency'
import { Field, Swap, swapAtom } from 'lib/state/swap'
import { useCallback, useLayoutEffect, useState } from 'react'
......@@ -18,7 +19,7 @@ export interface TokenDefaults {
function useDefaultToken(
defaultAddress: DefaultAddress | undefined,
chainId: number | undefined
): Currency | null | undefined {
): Currency | undefined {
let address = undefined
if (typeof defaultAddress === 'string') {
address = defaultAddress
......@@ -29,7 +30,7 @@ function useDefaultToken(
if (chainId && address === 'NATIVE') {
return nativeOnChain(chainId)
}
return token
return token ?? undefined
}
export default function useSyncTokenDefaults({
......@@ -40,14 +41,18 @@ export default function useSyncTokenDefaults({
}: TokenDefaults) {
const updateSwap = useUpdateAtom(swapAtom)
const { chainId } = useActiveWeb3React()
const defaultInputToken = useDefaultToken(defaultInputTokenAddress, chainId)
const nativeCurrency = useNativeCurrency()
const defaultOutputToken = useDefaultToken(defaultOutputTokenAddress, chainId)
const defaultInputToken =
useDefaultToken(defaultInputTokenAddress, chainId) ??
// Default the input token to the native currency if it is not the output token.
(defaultOutputToken === nativeCurrency ? nativeCurrency : undefined)
const setToDefaults = useCallback(() => {
const defaultSwapState: Swap = {
amount: '',
[Field.INPUT]: defaultInputToken || undefined,
[Field.OUTPUT]: defaultOutputToken || undefined,
[Field.INPUT]: defaultInputToken,
[Field.OUTPUT]: defaultOutputToken,
independentField: Field.INPUT,
}
if (defaultInputToken && defaultInputAmount) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment