From eec9295d55c60d095a83ef239fa5ae5f8af54368 Mon Sep 17 00:00:00 2001 From: wormat Date: Fri, 21 Oct 2022 11:14:04 +0200 Subject: [PATCH] fix(ui): Fix basic Wormhole form bugs --- apps/ui/src/components/WormholeForm.tsx | 19 +++++++++++++------ .../useTransferEvmToSolanaMutation.ts | 4 ++-- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/apps/ui/src/components/WormholeForm.tsx b/apps/ui/src/components/WormholeForm.tsx index d3f106e7f..48f6c45c4 100644 --- a/apps/ui/src/components/WormholeForm.tsx +++ b/apps/ui/src/components/WormholeForm.tsx @@ -34,7 +34,7 @@ import type { ReadonlyRecord } from "@swim-io/utils"; import { findOrThrow } from "@swim-io/utils"; import Decimal from "decimal.js"; import { utils as ethersUtils } from "ethers"; -import type { ReactElement } from "react"; +import type { FormEvent, ReactElement } from "react"; import { useEffect, useMemo, useState } from "react"; import type { UseQueryResult } from "react-query"; import { useQuery } from "react-query"; @@ -73,11 +73,10 @@ const EVM_NETWORKS: ReadonlyRecord = { const getDetailsByChainId = ( token: WormholeToken, chainId: ChainId, -): WormholeTokenDetails => - findOrThrow( - [token.nativeDetails, ...token.wrappedDetails], +): WormholeTokenDetails | null => + [token.nativeDetails, ...token.wrappedDetails].find( (details) => details.chainId === chainId, - ); + ) ?? null; const useErc20BalanceQuery = ({ chainId, @@ -160,6 +159,9 @@ export const WormholeForm = (): ReactElement => { const { mutateAsync: transfer, isLoading } = useWormholeTransfer(); const sourceDetails = getDetailsByChainId(currentToken, sourceChainId); + if (sourceDetails === null) { + throw new Error("Missing source details"); + } const targetDetails = getDetailsByChainId(currentToken, targetChainId); const splBalance = useUserSolanaTokenBalance( sourceChainId === CHAIN_ID_SOLANA ? sourceDetails : null, @@ -171,8 +173,13 @@ export const WormholeForm = (): ReactElement => { setTxResults((previousResults) => [...previousResults, txResult]); }; - const handleSubmit = () => { + const handleSubmit = (event: FormEvent) => { + event.preventDefault(); (async (): Promise => { + console.log(sourceDetails, targetDetails); + if (targetDetails === null) { + throw new Error("Missing target details"); + } setTxResults([]); await transfer({ interactionId: generateId(), diff --git a/apps/ui/src/hooks/wormhole/useTransferEvmToSolanaMutation.ts b/apps/ui/src/hooks/wormhole/useTransferEvmToSolanaMutation.ts index 240791586..4a7c88514 100644 --- a/apps/ui/src/hooks/wormhole/useTransferEvmToSolanaMutation.ts +++ b/apps/ui/src/hooks/wormhole/useTransferEvmToSolanaMutation.ts @@ -137,14 +137,14 @@ export const useTransferEvmToSolanaMutation = () => { undefined, retries, ); - const splTxGenerator = solanaClient.generateCompletePortalTransferTxs({ + const solanaTxGenerator = solanaClient.generateCompletePortalTransferTxs({ interactionId, vaa, wallet: solanaWallet, auxiliarySigner, }); - for await (const result of splTxGenerator) { + for await (const result of solanaTxGenerator) { onTxResult({ chainId: targetDetails.chainId, txId: result.tx.id,