From c5a48c3ec9875e91514a0a3997273725d54f5da7 Mon Sep 17 00:00:00 2001 From: spsjvc Date: Fri, 13 Jun 2025 13:08:20 +0200 Subject: [PATCH 1/9] wip --- .../src/ui-driver/UiDriver.ts | 3 ++- .../src/ui-driver/UiDriverCctp.ts | 16 +++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/packages/arb-token-bridge-ui/src/ui-driver/UiDriver.ts b/packages/arb-token-bridge-ui/src/ui-driver/UiDriver.ts index d2007af501..bb04dc7c90 100644 --- a/packages/arb-token-bridge-ui/src/ui-driver/UiDriver.ts +++ b/packages/arb-token-bridge-ui/src/ui-driver/UiDriver.ts @@ -1,6 +1,6 @@ import { BigNumber, providers } from 'ethers' import { BridgeTransferStarter } from '@/token-bridge-sdk/BridgeTransferStarter' -import { SimulateContractReturnType } from '@wagmi/core' +import { Config, SimulateContractReturnType } from '@wagmi/core' import { DialogType } from '../components/common/Dialog2' @@ -19,6 +19,7 @@ export type UiDriverContext = { walletAddress: string destinationAddress?: string transferStarter: BridgeTransferStarter + wagmiConfig: Config } export type UiDriverStep = diff --git a/packages/arb-token-bridge-ui/src/ui-driver/UiDriverCctp.ts b/packages/arb-token-bridge-ui/src/ui-driver/UiDriverCctp.ts index 4bad9150a7..6a0c3c1478 100644 --- a/packages/arb-token-bridge-ui/src/ui-driver/UiDriverCctp.ts +++ b/packages/arb-token-bridge-ui/src/ui-driver/UiDriverCctp.ts @@ -2,7 +2,8 @@ import { step, UiDriverStepGenerator } from './UiDriver' import { stepGeneratorForDialog, stepGeneratorForSmartContractWalletDestinationDialog, - stepGeneratorForTransactionEthers + stepGeneratorForTransactionEthers, + stepGeneratorForTransactionWagmi } from './UiDriverCommon' export const stepGeneratorForCctp: UiDriverStepGenerator = async function* ( @@ -32,4 +33,17 @@ export const stepGeneratorForCctp: UiDriverStepGenerator = async function* ( txRequestLabel: 'stepGeneratorForCctp.approveToken' }) } + + const request = await context.transferStarter.transferPrepareTxRequest({ + amount: context.amountBigNumber, + from: context.walletAddress, + destinationAddress: context.destinationAddress, + wagmiConfig: context.wagmiConfig + }) + + yield* stepGeneratorForTransactionWagmi(context, { + // @ts-expect-error - TODO: fix this + txRequest: request, + txRequestLabel: 'stepGeneratorForCctp.transfer' + }) } From e665b198d37946be1be6e7e64155862b54b9a348 Mon Sep 17 00:00:00 2001 From: spsjvc Date: Fri, 13 Jun 2025 13:08:47 +0200 Subject: [PATCH 2/9] oops --- .../src/components/TransferPanel/TransferPanel.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/arb-token-bridge-ui/src/components/TransferPanel/TransferPanel.tsx b/packages/arb-token-bridge-ui/src/components/TransferPanel/TransferPanel.tsx index b9542246b1..0874a594de 100644 --- a/packages/arb-token-bridge-ui/src/components/TransferPanel/TransferPanel.tsx +++ b/packages/arb-token-bridge-ui/src/components/TransferPanel/TransferPanel.tsx @@ -486,7 +486,8 @@ export function TransferPanel() { isSmartContractWallet, walletAddress, destinationAddress, - transferStarter: cctpTransferStarter + transferStarter: cctpTransferStarter, + wagmiConfig }) // this is only necessary while we are migrating to the ui driver From 95234ab70ba95c33db60d9a2ce0b4cf668e8d023 Mon Sep 17 00:00:00 2001 From: spsjvc Date: Fri, 13 Jun 2025 13:27:48 +0200 Subject: [PATCH 3/9] wip --- .../TransferPanel/TransferPanel.tsx | 110 +++--------------- .../src/ui-driver/UiDriver.ts | 23 ++++ .../src/ui-driver/UiDriverCctp.ts | 78 ++++++++++++- 3 files changed, 118 insertions(+), 93 deletions(-) diff --git a/packages/arb-token-bridge-ui/src/components/TransferPanel/TransferPanel.tsx b/packages/arb-token-bridge-ui/src/components/TransferPanel/TransferPanel.tsx index 0874a594de..8d7e09c4e7 100644 --- a/packages/arb-token-bridge-ui/src/components/TransferPanel/TransferPanel.tsx +++ b/packages/arb-token-bridge-ui/src/components/TransferPanel/TransferPanel.tsx @@ -452,6 +452,13 @@ export function TransferPanel() { return handleTxSigningError(error, step.payload.txRequestLabel) } } + + case 'tx_history_add': { + addPendingTransaction(step.payload) + switchToTransactionHistoryTab() + + return + } } } @@ -472,8 +479,12 @@ export function TransferPanel() { const destinationAddress = latestDestinationAddress.current try { - const { sourceChainProvider, destinationChainProvider, sourceChain } = - latestNetworks.current + const { + sourceChainProvider, + destinationChainProvider, + sourceChain, + destinationChain + } = latestNetworks.current const cctpTransferStarter = new CctpTransferStarter({ sourceChainProvider, @@ -481,13 +492,18 @@ export function TransferPanel() { }) const returnEarly = await drive(stepGeneratorForCctp, stepExecutor, { + amount, amountBigNumber, isDepositMode, isSmartContractWallet, walletAddress, destinationAddress, transferStarter: cctpTransferStarter, - wagmiConfig + wagmiConfig, + sourceChain, + destinationChain, + childChain, + parentChain }) // this is only necessary while we are migrating to the ui driver @@ -498,94 +514,6 @@ export function TransferPanel() { return } - let depositForBurnTx - - try { - if (isSmartContractWallet) { - showDelayedSmartContractTxRequest() - } - const transfer = await cctpTransferStarter.transfer({ - amount: amountBigNumber, - signer, - destinationAddress, - wagmiConfig - }) - depositForBurnTx = transfer.sourceChainTransaction - } catch (error) { - if (isUserRejectedError(error)) { - return - } - handleError({ - error, - label: 'cctp_transfer', - category: 'transaction_signing' - }) - errorToast( - `USDC ${ - isDepositMode ? 'Deposit' : 'Withdrawal' - } transaction failed: ${(error as Error)?.message ?? error}` - ) - } - - const childChainName = getNetworkName(childChain.id) - - if (isSmartContractWallet) { - // For SCW, we assume that the transaction went through - trackEvent(isDepositMode ? 'CCTP Deposit' : 'CCTP Withdrawal', { - accountType: 'Smart Contract', - network: childChainName, - amount: Number(amount), - complete: false, - version: 2 - }) - - return - } - - if (!depositForBurnTx) { - return - } - - trackEvent(isDepositMode ? 'CCTP Deposit' : 'CCTP Withdrawal', { - accountType: 'EOA', - network: childChainName, - amount: Number(amount), - complete: false, - version: 2 - }) - - const newTransfer: MergedTransaction = { - txId: depositForBurnTx.hash, - asset: 'USDC', - assetType: AssetType.ERC20, - blockNum: null, - createdAt: dayjs().valueOf(), - direction: isDepositMode ? 'deposit' : 'withdraw', - isWithdrawal: !isDepositMode, - resolvedAt: null, - status: 'pending', - uniqueId: null, - value: amount, - depositStatus: DepositStatus.CCTP_DEFAULT_STATE, - destination: destinationAddress ?? walletAddress, - sender: walletAddress, - isCctp: true, - tokenAddress: getUsdcTokenAddressFromSourceChainId(sourceChain.id), - cctpData: { - sourceChainId: sourceChain.id, - attestationHash: null, - messageBytes: null, - receiveMessageTransactionHash: null, - receiveMessageTimestamp: null - }, - parentChainId: parentChain.id, - childChainId: childChain.id, - sourceChainId: networks.sourceChain.id, - destinationChainId: networks.destinationChain.id - } - - addPendingTransaction(newTransfer) - switchToTransactionHistoryTab() setTransferring(false) clearAmountInput() clearRoute() diff --git a/packages/arb-token-bridge-ui/src/ui-driver/UiDriver.ts b/packages/arb-token-bridge-ui/src/ui-driver/UiDriver.ts index bb04dc7c90..bf05499fb2 100644 --- a/packages/arb-token-bridge-ui/src/ui-driver/UiDriver.ts +++ b/packages/arb-token-bridge-ui/src/ui-driver/UiDriver.ts @@ -1,8 +1,11 @@ import { BigNumber, providers } from 'ethers' import { BridgeTransferStarter } from '@/token-bridge-sdk/BridgeTransferStarter' import { Config, SimulateContractReturnType } from '@wagmi/core' +import { Chain } from 'wagmi/chains' import { DialogType } from '../components/common/Dialog2' +import { trackEvent } from '../util/AnalyticsUtils' +import { MergedTransaction } from '../state/app/state' export type Dialog = Extract< DialogType, @@ -13,6 +16,7 @@ export type Dialog = Extract< > export type UiDriverContext = { + amount: string amountBigNumber: BigNumber isDepositMode: boolean isSmartContractWallet: boolean @@ -20,6 +24,10 @@ export type UiDriverContext = { destinationAddress?: string transferStarter: BridgeTransferStarter wagmiConfig: Config + sourceChain: Chain + destinationChain: Chain + childChain: Chain + parentChain: Chain } export type UiDriverStep = @@ -41,6 +49,17 @@ export type UiDriverStep = txRequestLabel: string } } + | { + type: 'analytics' + payload: { + event: Parameters[0] + properties?: Parameters[1] + } + } + | { + type: 'tx_history_add' + payload: MergedTransaction + } export type UiDriverStepType = UiDriverStep['type'] @@ -66,6 +85,10 @@ export type UiDriverStepResultFor = ? void : TStepType extends 'tx_ethers' | 'tx_wagmi' ? Result + : TStepType extends 'analytics' + ? void + : TStepType extends 'tx_history_add' + ? void : never export type UiDriverStepGenerator = ( diff --git a/packages/arb-token-bridge-ui/src/ui-driver/UiDriverCctp.ts b/packages/arb-token-bridge-ui/src/ui-driver/UiDriverCctp.ts index 6a0c3c1478..d6bffe458c 100644 --- a/packages/arb-token-bridge-ui/src/ui-driver/UiDriverCctp.ts +++ b/packages/arb-token-bridge-ui/src/ui-driver/UiDriverCctp.ts @@ -1,4 +1,6 @@ -import { step, UiDriverStepGenerator } from './UiDriver' +import dayjs from 'dayjs' + +import { step, UiDriverStepGenerator, UiDriverContext } from './UiDriver' import { stepGeneratorForDialog, stepGeneratorForSmartContractWalletDestinationDialog, @@ -6,6 +8,11 @@ import { stepGeneratorForTransactionWagmi } from './UiDriverCommon' +import { getNetworkName } from '../util/networks' +import { DepositStatus, MergedTransaction } from '../state/app/state' +import { AssetType } from '../hooks/arbTokenBridge.types' +import { getUsdcTokenAddressFromSourceChainId } from '../state/cctpState' + export const stepGeneratorForCctp: UiDriverStepGenerator = async function* ( context ) { @@ -41,9 +48,76 @@ export const stepGeneratorForCctp: UiDriverStepGenerator = async function* ( wagmiConfig: context.wagmiConfig }) - yield* stepGeneratorForTransactionWagmi(context, { + const receipt = yield* stepGeneratorForTransactionWagmi(context, { // @ts-expect-error - TODO: fix this txRequest: request, txRequestLabel: 'stepGeneratorForCctp.transfer' }) + + if (typeof receipt === 'undefined') { + return + } + + yield { + type: 'analytics', + payload: { + event: context.isDepositMode ? 'CCTP Deposit' : 'CCTP Withdrawal', + properties: { + accountType: context.isSmartContractWallet ? 'Smart Contract' : 'EOA', + network: getNetworkName(context.childChain.id), + amount: Number(context.amount), + complete: false, + version: 2 + } + } + } + + yield { + type: 'tx_history_add', + payload: createMergedTransaction(context, receipt.transactionHash) + } +} + +function createMergedTransaction( + { + isDepositMode, + walletAddress, + destinationAddress, + sourceChain, + destinationChain, + amount, + parentChain, + childChain + }: UiDriverContext, + depositForBurnTxHash: string +): MergedTransaction { + return { + txId: depositForBurnTxHash, + asset: 'USDC', + assetType: AssetType.ERC20, + blockNum: null, + createdAt: dayjs().valueOf(), + direction: isDepositMode ? 'deposit' : 'withdraw', + isWithdrawal: !isDepositMode, + resolvedAt: null, + status: 'pending', + uniqueId: null, + value: amount, + depositStatus: DepositStatus.CCTP_DEFAULT_STATE, + destination: destinationAddress ?? walletAddress, + sender: walletAddress, + isCctp: true, + tokenAddress: getUsdcTokenAddressFromSourceChainId(sourceChain.id), + cctpData: { + sourceChainId: sourceChain.id, + attestationHash: null, + messageBytes: null, + receiveMessageTransactionHash: null, + receiveMessageTimestamp: null + }, + parentChainId: parentChain.id, + childChainId: childChain.id, + sourceChainId: sourceChain.id, + destinationChainId: destinationChain.id + } } From ad02d7004ad1f60b536e053454775b9c1c989e8e Mon Sep 17 00:00:00 2001 From: spsjvc Date: Tue, 17 Jun 2025 11:43:31 +0200 Subject: [PATCH 4/9] use helper --- .../arb-token-bridge-ui/src/ui-driver/UiDriverCctp.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/arb-token-bridge-ui/src/ui-driver/UiDriverCctp.ts b/packages/arb-token-bridge-ui/src/ui-driver/UiDriverCctp.ts index d6bffe458c..c157f29059 100644 --- a/packages/arb-token-bridge-ui/src/ui-driver/UiDriverCctp.ts +++ b/packages/arb-token-bridge-ui/src/ui-driver/UiDriverCctp.ts @@ -58,7 +58,7 @@ export const stepGeneratorForCctp: UiDriverStepGenerator = async function* ( return } - yield { + yield* step({ type: 'analytics', payload: { event: context.isDepositMode ? 'CCTP Deposit' : 'CCTP Withdrawal', @@ -70,12 +70,12 @@ export const stepGeneratorForCctp: UiDriverStepGenerator = async function* ( version: 2 } } - } + }) - yield { + yield* step({ type: 'tx_history_add', payload: createMergedTransaction(context, receipt.transactionHash) - } + }) } function createMergedTransaction( From 96b586f06e0551a972a4d50581f45abbd8511f04 Mon Sep 17 00:00:00 2001 From: spsjvc Date: Wed, 18 Jun 2025 12:40:10 +0200 Subject: [PATCH 5/9] reduce context --- .../src/ui-driver/UiDriver.ts | 4 --- .../src/ui-driver/UiDriverCctp.ts | 32 +++++++++++-------- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/packages/arb-token-bridge-ui/src/ui-driver/UiDriver.ts b/packages/arb-token-bridge-ui/src/ui-driver/UiDriver.ts index bf05499fb2..3ff9cfc1b5 100644 --- a/packages/arb-token-bridge-ui/src/ui-driver/UiDriver.ts +++ b/packages/arb-token-bridge-ui/src/ui-driver/UiDriver.ts @@ -24,10 +24,6 @@ export type UiDriverContext = { destinationAddress?: string transferStarter: BridgeTransferStarter wagmiConfig: Config - sourceChain: Chain - destinationChain: Chain - childChain: Chain - parentChain: Chain } export type UiDriverStep = diff --git a/packages/arb-token-bridge-ui/src/ui-driver/UiDriverCctp.ts b/packages/arb-token-bridge-ui/src/ui-driver/UiDriverCctp.ts index c157f29059..752ccb9314 100644 --- a/packages/arb-token-bridge-ui/src/ui-driver/UiDriverCctp.ts +++ b/packages/arb-token-bridge-ui/src/ui-driver/UiDriverCctp.ts @@ -1,4 +1,5 @@ import dayjs from 'dayjs' +import { getChainIdFromProvider } from '@/token-bridge-sdk/utils' import { step, UiDriverStepGenerator, UiDriverContext } from './UiDriver' import { @@ -74,23 +75,28 @@ export const stepGeneratorForCctp: UiDriverStepGenerator = async function* ( yield* step({ type: 'tx_history_add', - payload: createMergedTransaction(context, receipt.transactionHash) + payload: await createMergedTransaction(context, receipt.transactionHash) }) } -function createMergedTransaction( +async function createMergedTransaction( { isDepositMode, walletAddress, destinationAddress, - sourceChain, - destinationChain, amount, - parentChain, - childChain + transferStarter }: UiDriverContext, depositForBurnTxHash: string -): MergedTransaction { +): Promise { + const [sourceChainId, destinationChainId] = await Promise.all([ + getChainIdFromProvider(transferStarter.sourceChainProvider), + getChainIdFromProvider(transferStarter.destinationChainProvider) + ]) + + const childChainId = isDepositMode ? destinationChainId : sourceChainId + const parentChainId = isDepositMode ? sourceChainId : destinationChainId + return { txId: depositForBurnTxHash, asset: 'USDC', @@ -107,17 +113,17 @@ function createMergedTransaction( destination: destinationAddress ?? walletAddress, sender: walletAddress, isCctp: true, - tokenAddress: getUsdcTokenAddressFromSourceChainId(sourceChain.id), + tokenAddress: getUsdcTokenAddressFromSourceChainId(sourceChainId), cctpData: { - sourceChainId: sourceChain.id, + sourceChainId, attestationHash: null, messageBytes: null, receiveMessageTransactionHash: null, receiveMessageTimestamp: null }, - parentChainId: parentChain.id, - childChainId: childChain.id, - sourceChainId: sourceChain.id, - destinationChainId: destinationChain.id + parentChainId, + childChainId, + sourceChainId, + destinationChainId } } From fc6de208c45587bcbc27b1360000468b70bde3a8 Mon Sep 17 00:00:00 2001 From: spsjvc Date: Wed, 18 Jun 2025 12:41:54 +0200 Subject: [PATCH 6/9] fix --- .../src/components/TransferPanel/TransferPanel.tsx | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/packages/arb-token-bridge-ui/src/components/TransferPanel/TransferPanel.tsx b/packages/arb-token-bridge-ui/src/components/TransferPanel/TransferPanel.tsx index 8d7e09c4e7..dff14021bb 100644 --- a/packages/arb-token-bridge-ui/src/components/TransferPanel/TransferPanel.tsx +++ b/packages/arb-token-bridge-ui/src/components/TransferPanel/TransferPanel.tsx @@ -480,10 +480,9 @@ export function TransferPanel() { try { const { + // sourceChainProvider, - destinationChainProvider, - sourceChain, - destinationChain + destinationChainProvider } = latestNetworks.current const cctpTransferStarter = new CctpTransferStarter({ @@ -499,11 +498,7 @@ export function TransferPanel() { walletAddress, destinationAddress, transferStarter: cctpTransferStarter, - wagmiConfig, - sourceChain, - destinationChain, - childChain, - parentChain + wagmiConfig }) // this is only necessary while we are migrating to the ui driver From 1ec8825ace55b821f16000754f13fed463b6b2d3 Mon Sep 17 00:00:00 2001 From: spsjvc Date: Tue, 24 Jun 2025 12:54:57 +0200 Subject: [PATCH 7/9] add type guard --- .../src/token-bridge-sdk/utils.ts | 13 ++++++++++++- .../src/ui-driver/UiDriverCctp.ts | 13 +++++++++++-- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/packages/arb-token-bridge-ui/src/token-bridge-sdk/utils.ts b/packages/arb-token-bridge-ui/src/token-bridge-sdk/utils.ts index d7c5f15f58..d058e50d6e 100644 --- a/packages/arb-token-bridge-ui/src/token-bridge-sdk/utils.ts +++ b/packages/arb-token-bridge-ui/src/token-bridge-sdk/utils.ts @@ -1,5 +1,10 @@ import { BigNumber, Signer } from 'ethers' -import { Provider, StaticJsonRpcProvider } from '@ethersproject/providers' +import { + Provider, + StaticJsonRpcProvider, + TransactionRequest +} from '@ethersproject/providers' +import { SimulateContractReturnType } from 'viem' import { isNetwork, rpcURLs } from '../util/networks' import { ChainId } from '../types/ChainId' @@ -123,3 +128,9 @@ export function getProviderForChainId(chainId: ChainId): StaticJsonRpcProvider { return createProviderWithCache(chainId) } + +export function isSimulateContractReturnType( + value: TransactionRequest | SimulateContractReturnType +): value is SimulateContractReturnType { + return 'request' in value && 'result' in value +} diff --git a/packages/arb-token-bridge-ui/src/ui-driver/UiDriverCctp.ts b/packages/arb-token-bridge-ui/src/ui-driver/UiDriverCctp.ts index 752ccb9314..3578d190c8 100644 --- a/packages/arb-token-bridge-ui/src/ui-driver/UiDriverCctp.ts +++ b/packages/arb-token-bridge-ui/src/ui-driver/UiDriverCctp.ts @@ -1,5 +1,8 @@ import dayjs from 'dayjs' -import { getChainIdFromProvider } from '@/token-bridge-sdk/utils' +import { + getChainIdFromProvider, + isSimulateContractReturnType +} from '@/token-bridge-sdk/utils' import { step, UiDriverStepGenerator, UiDriverContext } from './UiDriver' import { @@ -49,8 +52,14 @@ export const stepGeneratorForCctp: UiDriverStepGenerator = async function* ( wagmiConfig: context.wagmiConfig }) + // Use type guard to narrow the union type + if (!isSimulateContractReturnType(request)) { + throw new Error( + `Expected "SimulateContractReturnType" for wagmi transaction` + ) + } + const receipt = yield* stepGeneratorForTransactionWagmi(context, { - // @ts-expect-error - TODO: fix this txRequest: request, txRequestLabel: 'stepGeneratorForCctp.transfer' }) From 6326603bc01658994bcdac43ae917cddf098c90e Mon Sep 17 00:00:00 2001 From: spsjvc Date: Tue, 24 Jun 2025 13:03:51 +0200 Subject: [PATCH 8/9] fix --- .../src/ui-driver/UiDriverCctp.ts | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/packages/arb-token-bridge-ui/src/ui-driver/UiDriverCctp.ts b/packages/arb-token-bridge-ui/src/ui-driver/UiDriverCctp.ts index 3578d190c8..b284083bac 100644 --- a/packages/arb-token-bridge-ui/src/ui-driver/UiDriverCctp.ts +++ b/packages/arb-token-bridge-ui/src/ui-driver/UiDriverCctp.ts @@ -68,13 +68,20 @@ export const stepGeneratorForCctp: UiDriverStepGenerator = async function* ( return } + const [sourceChainId, destinationChainId] = await Promise.all([ + getChainIdFromProvider(context.transferStarter.sourceChainProvider), + getChainIdFromProvider(context.transferStarter.destinationChainProvider) + ]) + yield* step({ type: 'analytics', payload: { event: context.isDepositMode ? 'CCTP Deposit' : 'CCTP Withdrawal', properties: { accountType: context.isSmartContractWallet ? 'Smart Contract' : 'EOA', - network: getNetworkName(context.childChain.id), + network: getNetworkName( + context.isDepositMode ? destinationChainId : sourceChainId + ), amount: Number(context.amount), complete: false, version: 2 @@ -84,7 +91,10 @@ export const stepGeneratorForCctp: UiDriverStepGenerator = async function* ( yield* step({ type: 'tx_history_add', - payload: await createMergedTransaction(context, receipt.transactionHash) + payload: await createMergedTransaction( + { ...context, sourceChainId, destinationChainId }, + receipt.transactionHash + ) }) } @@ -94,15 +104,11 @@ async function createMergedTransaction( walletAddress, destinationAddress, amount, - transferStarter - }: UiDriverContext, + sourceChainId, + destinationChainId + }: UiDriverContext & { sourceChainId: number; destinationChainId: number }, depositForBurnTxHash: string ): Promise { - const [sourceChainId, destinationChainId] = await Promise.all([ - getChainIdFromProvider(transferStarter.sourceChainProvider), - getChainIdFromProvider(transferStarter.destinationChainProvider) - ]) - const childChainId = isDepositMode ? destinationChainId : sourceChainId const parentChainId = isDepositMode ? sourceChainId : destinationChainId From ed0fbfc024b1ddd95b46d85c7d4b0891ad238132 Mon Sep 17 00:00:00 2001 From: spsjvc Date: Tue, 24 Jun 2025 13:24:22 +0200 Subject: [PATCH 9/9] clean up --- .../src/ui-driver/UiDriverCctp.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/arb-token-bridge-ui/src/ui-driver/UiDriverCctp.ts b/packages/arb-token-bridge-ui/src/ui-driver/UiDriverCctp.ts index b284083bac..deda48717e 100644 --- a/packages/arb-token-bridge-ui/src/ui-driver/UiDriverCctp.ts +++ b/packages/arb-token-bridge-ui/src/ui-driver/UiDriverCctp.ts @@ -20,6 +20,11 @@ import { getUsdcTokenAddressFromSourceChainId } from '../state/cctpState' export const stepGeneratorForCctp: UiDriverStepGenerator = async function* ( context ) { + const [sourceChainId, destinationChainId] = await Promise.all([ + getChainIdFromProvider(context.transferStarter.sourceChainProvider), + getChainIdFromProvider(context.transferStarter.destinationChainProvider) + ]) + const deposit = context.isDepositMode const dialog = `confirm_cctp_${deposit ? 'deposit' : 'withdrawal'}` as const @@ -52,7 +57,7 @@ export const stepGeneratorForCctp: UiDriverStepGenerator = async function* ( wagmiConfig: context.wagmiConfig }) - // Use type guard to narrow the union type + // narrow the union type if (!isSimulateContractReturnType(request)) { throw new Error( `Expected "SimulateContractReturnType" for wagmi transaction` @@ -68,11 +73,6 @@ export const stepGeneratorForCctp: UiDriverStepGenerator = async function* ( return } - const [sourceChainId, destinationChainId] = await Promise.all([ - getChainIdFromProvider(context.transferStarter.sourceChainProvider), - getChainIdFromProvider(context.transferStarter.destinationChainProvider) - ]) - yield* step({ type: 'analytics', payload: {