diff --git a/packages/bridge/src/components/TokenSelectModal/index.tsx b/packages/bridge/src/components/TokenSelectModal/index.tsx index 57b5835..8c2b838 100644 --- a/packages/bridge/src/components/TokenSelectModal/index.tsx +++ b/packages/bridge/src/components/TokenSelectModal/index.tsx @@ -15,7 +15,6 @@ export const TokenSelectModal = (props: { }) => { const { tokens } = useEthereum(); const [isModalVisible, setIsModalVisible] = useState(false); - const [selected, setSelected] = useState(''); const [search, setSearch] = useState(''); const tokenList = useMemo(() => { @@ -38,11 +37,8 @@ export const TokenSelectModal = (props: { setIsModalVisible(false); }; const firstToken = useMemo(() => { - if (!selected) { - return tokens.find(el => el.address === props.asset); - } - return tokens.find(el => el.address === selected); - }, [selected, tokens, props.asset]); + return tokens.find(el => el.address === props.asset); + }, [tokens, props.asset]); const delayedSearchChange = _.debounce(val => { setSearch(val); @@ -58,7 +54,6 @@ export const TokenSelectModal = (props: { title={token.name} onClick={() => { props.onSelectToken(mint); - setSelected(mint); hideModal(); }} style={{ ...rowProps.style, cursor: 'pointer' }} diff --git a/packages/bridge/src/components/Transfer/index.tsx b/packages/bridge/src/components/Transfer/index.tsx index d4cc1b2..d652e15 100644 --- a/packages/bridge/src/components/Transfer/index.tsx +++ b/packages/bridge/src/components/Transfer/index.tsx @@ -16,6 +16,7 @@ import { TokenDisplay } from './../TokenDisplay'; import { WrappedAssetFactory } from '../../contracts/WrappedAssetFactory'; import { WormholeFactory } from '../../contracts/WormholeFactory'; import BN from 'bn.js'; +import { useTokenChainPairState } from '../../contexts/chainPair'; const { useConnection } = contexts.Connection; const { useWallet } = contexts.Wallet; @@ -40,27 +41,45 @@ export const Transfer = () => { const connection = useConnection(); const { wallet } = useWallet(); const { provider, tokenMap, tokens } = useEthereum(); + const { + A, + B, + mintAddress, + setMintAddress, + setLastTypedAccount, + } = useTokenChainPairState(); const [request, setRequest] = useState({ from: ASSET_CHAIN.Ethereum, toChain: ASSET_CHAIN.Solana, }); useEffect(() => { - if (tokens && !request.asset) { + if (mintAddress && !request.asset) { setRequest({ ...request, - asset: tokens?.[0]?.address, + asset: mintAddress, }); } - }, [request, tokens, setRequest]); + }, [mintAddress]); const setAssetInformation = async (asset: string) => { + setMintAddress(asset); setRequest({ ...request, - asset, + asset: asset, }); }; + useEffect(() => { + setRequest({ + ...request, + amount: A.amount, + asset: mintAddress, + from: A.chain, + toChain: B.chain, + }); + }, [A, B, mintAddress]); + useEffect(() => { const asset = request.asset; if (!asset || asset === request?.info?.address) { @@ -125,29 +144,26 @@ export const Transfer = () => { setAssetInformation(asset)} - amount={request.amount} + chain={A.chain} + amount={A.amount} onInputChange={amount => { - setRequest({ - ...request, - amount: amount || 0, - }); + setLastTypedAccount(A.chain); + A.setAmount(amount || 0); }} />