From ee96a59b99e3a9af45ca401cc5eb9a8f06a285cd Mon Sep 17 00:00:00 2001 From: dafuga Date: Fri, 30 Jun 2023 13:07:05 -0400 Subject: [PATCH] enhancement: polished the error page --- src/components/elements/input.svelte | 2 +- src/components/elements/input/asset.svelte | 2 +- src/lib/evm.ts | 65 +++++++++------------- src/pages/evm/swap.svelte | 26 ++++----- src/pages/evm/swap/error.svelte | 52 ++++++++++++++--- src/pages/evm/swap/form.svelte | 3 + src/pages/evm/swap/success.svelte | 54 ++++++++++-------- 7 files changed, 117 insertions(+), 87 deletions(-) diff --git a/src/components/elements/input.svelte b/src/components/elements/input.svelte index 030f5447..d759e416 100644 --- a/src/components/elements/input.svelte +++ b/src/components/elements/input.svelte @@ -29,7 +29,7 @@ const form: Form = getContext('form') const setInitialFormValidation = async () => { - form.setInput(name, isValid ? false : true) + form.setInput(name, isValid ? await isValid(value) : true) } if (form) { diff --git a/src/components/elements/input/asset.svelte b/src/components/elements/input/asset.svelte index 054ab462..bb551e9a 100644 --- a/src/components/elements/input/asset.svelte +++ b/src/components/elements/input/asset.svelte @@ -33,7 +33,7 @@ validateNonZero(value, symbol) } if (balance) { - // validateBalance(value, balance) + validateBalance(value, balance) } } catch (errorObject) { errorMessage = errorObject.message diff --git a/src/lib/evm.ts b/src/lib/evm.ts index 24f268cc..f03f40c1 100644 --- a/src/lib/evm.ts +++ b/src/lib/evm.ts @@ -118,50 +118,35 @@ export async function transferNativeToEvm({nativeSession, evmAccount, amount}: T memo: evmAccount.address, }) - let result - - try { - result = await nativeSession.transact({ - action: { - authorization: [nativeSession.auth], - account: Name.from('eosio.token'), - name: Name.from('transfer'), - data: action, - }, - }) - - console.log({result}) - - return result - } catch (error) { - throw new Error(`Transaction failed: ${error}`) - } + return nativeSession.transact({ + action: { + authorization: [nativeSession.auth], + account: Name.from('eosio.token'), + name: Name.from('transfer'), + data: action, + }, + }) } export async function transferEvmToNative({nativeSession, evmAccount, amount}: TransferParams) { - try { - const targetEvmAddress = convertToEvmAddress(String(nativeSession.auth.actor)) - - const gas = await provider.estimateGas({ - from: evmAccount.address, - to: targetEvmAddress, - value: ethers.utils.parseEther(amount), - gasPrice: await provider.getGasPrice(), - data: ethers.utils.formatBytes32String(''), - }) - const result = await evmAccount.sendTransaction({ - from: evmAccount.address, - to: targetEvmAddress, - value: ethers.utils.parseEther(amount), - gasPrice: await provider.getGasPrice(), - gasLimit: gas, - data: ethers.utils.formatBytes32String(''), - }) + const targetEvmAddress = convertToEvmAddress(String(nativeSession.auth.actor)) + + const gas = await provider.estimateGas({ + from: evmAccount.address, + to: targetEvmAddress, + value: ethers.utils.parseEther(amount), + gasPrice: await provider.getGasPrice(), + data: ethers.utils.formatBytes32String(''), + }) - return result - } catch (err) { - console.error(err) - } + return evmAccount.sendTransaction({ + from: evmAccount.address, + to: targetEvmAddress, + value: ethers.utils.parseEther(amount), + gasPrice: await provider.getGasPrice(), + gasLimit: gas, + data: ethers.utils.formatBytes32String(''), + }) } async function switchNetwork() { diff --git a/src/pages/evm/swap.svelte b/src/pages/evm/swap.svelte index 1a8e2a76..95d3847b 100644 --- a/src/pages/evm/swap.svelte +++ b/src/pages/evm/swap.svelte @@ -13,15 +13,15 @@ import Error from './swap/error.svelte' let step = 'form' - let amount: string = '0.0000' - let error: string | undefined + let amount: string = '' + let errorMessage: string | undefined let transferOption: 'nativeToEvm' | 'evmToNative' = 'nativeToEvm' let nativeTransactResult: TransactResult | undefined let evmTransactResult: ethers.providers.TransactionResponse | undefined async function transfer() { if (!$evmAccount) { - return (error = 'An evm session is required.') + return (errorMessage = 'An evm session is required.') } try { @@ -39,22 +39,20 @@ }) } } catch (error) { - return (error = `Could not transfer. Error: ${error.message}`) + return (errorMessage = `Could not transfer. Error: ${ + JSON.stringify(error) === '{}' ? error.message : JSON.stringify(error) + }`) } - if (nativeTransactResult || evmTransactResult) { - step = 'success' - } else { - error = 'Could not transfer.' - } + step = 'success' } function handleBack() { step = 'form' - error = undefined + errorMessage = undefined nativeTransactResult = undefined evmTransactResult = undefined - amount = '0.0000' + amount = '' } async function submitForm() { @@ -71,7 +69,7 @@ try { ethWalletAccount = await connectEthWallet() } catch (e) { - return (error = `Could not connect to ETH wallet. Error: ${e.message}`) + return (errorMessage = `Could not connect to ETH wallet. Error: ${e.message}`) } evmAccount.set(ethWalletAccount) @@ -87,8 +85,8 @@
- {#if error} - + {#if errorMessage} + {:else if step === 'form'}
{:else if step === 'confirm'} diff --git a/src/pages/evm/swap/error.svelte b/src/pages/evm/swap/error.svelte index 6620f82a..7db1791c 100644 --- a/src/pages/evm/swap/error.svelte +++ b/src/pages/evm/swap/error.svelte @@ -5,17 +5,55 @@ export let handleBack: () => void + +

Transfer Failed

- - - - - -
Error{error}
+
+

+ {error} +

+
- +
+ +
diff --git a/src/pages/evm/swap/form.svelte b/src/pages/evm/swap/form.svelte index dbcedfa2..ba9bfabe 100644 --- a/src/pages/evm/swap/form.svelte +++ b/src/pages/evm/swap/form.svelte @@ -19,6 +19,8 @@ function handleSelectChange(event: CustomEvent) { transferOption = event.detail + amount = '' + if (!$evmAccount) { connectEvmWallet() } @@ -119,6 +121,7 @@ void + + const blockExplorerUrl = 'https://explorer.evm.eosnetwork.com/tx/' - @@ -54,14 +61,13 @@ Transaction ID {evmTransactResult?.hash} - - - - - - - - + +
+ + +
{/if}