UNPKG

0xtrails

Version:

SDK for Trails

602 lines (591 loc) 22.4 kB
import { useCallback } from "react" import { parseUnits } from "viem" import { getNormalizedQuoteObject } from "../../prepareSend.js" import type { PrepareSendQuote } from "../../prepareSend.js" import type { TransactionState } from "../../transactions.js" type Screen = | "connect" | "tokens" | "send-form" | "fund-form" | "fund-methods" | "earn" | "earn-pools" | "swap" | "receive" | "wallet-confirmation" | "qr-code-deposit" | "pending" | "receipt" | "mesh-connect" | "wallet-connect" | "wallet-list" | "wallet-connection-pending" | "account-history" | "chain-list" interface UseDebugScreensProps { setCurrentScreen: (screen: Screen) => void setSelectedToken: (token: any) => void setTransactionStates: (states: TransactionState[]) => void setPrepareSendQuote: (quote: PrepareSendQuote | null) => void setShowWalletConfirmRetry: (show: boolean) => void setCurrentMode: (mode: any) => void setSelectedWalletId: (id: string | null) => void setShowWalletConnectionRetry: (show: boolean) => void setError: (error: string | null) => void setIsConnecting: (connecting: boolean) => void setMeshConnectProps: (props: any) => void isConnected: boolean } export const useDebugScreens = ({ setCurrentScreen, setSelectedToken, setTransactionStates, setPrepareSendQuote, setShowWalletConfirmRetry, setCurrentMode, setSelectedWalletId, setShowWalletConnectionRetry, setError, isConnected, }: UseDebugScreensProps) => { const handleDebugScreenSelect = useCallback( async (screen: string) => { // Reset necessary state based on the target screen setError(null) const dummySelectedToken = { id: 1, name: "USD Coin", symbol: "USDC", balance: parseUnits("1.99", 6)?.toString(), imageUrl: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png", chainId: 1, contractAddress: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", contractInfo: { decimals: 6, symbol: "USDC", name: "USD Coin", }, } const dummyQuote = await getNormalizedQuoteObject({ originDepositAddress: "0x5A0fb747531bC369367CB031472b89ea4D5c6Df7", destinationDepositAddress: "0x5A0fb747531bC369367CB031472b89ea4D5c6Df7", originAmount: parseUnits("1", 6)?.toString(), originTokenAddress: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", originChainId: 1, originTokenPriceUsd: "1", destinationChainId: 137, destinationTokenAddress: "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359", destinationAmount: parseUnits("0.97", 6)?.toString(), destinationTokenPriceUsd: "1", }) switch (screen) { case "connect": setSelectedToken(null) setTransactionStates([]) setCurrentScreen("connect") break case "tokens": if (isConnected) { setSelectedToken(null) setTransactionStates([]) setCurrentScreen("tokens") } break case "chain-list": setSelectedToken(null) setTransactionStates([]) setCurrentScreen("chain-list") break case "send-form": // Set dummy USDC token for debug mode and set mode to pay setCurrentMode("pay") setSelectedToken(dummySelectedToken) setTransactionStates([]) setCurrentScreen("send-form") break case "fund-form": // Set dummy USDC token for debug mode and set mode to fund setCurrentMode("fund") setSelectedToken(dummySelectedToken) setTransactionStates([]) setCurrentScreen("fund-form") break case "wallet-confirmation": // Set dummy USDC token for debug mode setSelectedToken(dummySelectedToken) setPrepareSendQuote(dummyQuote) setTransactionStates([]) setShowWalletConfirmRetry(false) setCurrentScreen("wallet-confirmation") break case "wallet-confirmation-retry": // Set dummy USDC token for debug mode setSelectedToken(dummySelectedToken) setPrepareSendQuote(dummyQuote) setTransactionStates([]) setShowWalletConfirmRetry(true) setCurrentScreen("wallet-confirmation") break case "pending-1-item-0-confirmed": // Set dummy transaction states for debug mode - showing all steps setTransactionStates([ { transactionHash: "0x45bb2259631e73f32841a6058b0a4008c75bca296942bec6326d188978d5353d", explorerUrl: "https://polygonscan.com/tx/0x45bb2259631e73f32841a6058b0a4008c75bca296942bec6326d188978d5353d", chainId: 137, state: "pending", label: "Swap", }, ]) setPrepareSendQuote(dummyQuote) setCurrentScreen("pending") break case "pending-1-item-1-confirmed": // Set dummy transaction states for debug mode - showing all steps setTransactionStates([ { transactionHash: "0x45bb2259631e73f32841a6058b0a4008c75bca296942bec6326d188978d5353d", explorerUrl: "https://polygonscan.com/tx/0x45bb2259631e73f32841a6058b0a4008c75bca296942bec6326d188978d5353d", chainId: 137, state: "confirmed", label: "Swap", }, ]) setPrepareSendQuote(dummyQuote) setCurrentScreen("pending") break case "pending-2-item-0-confirmed": // Set dummy transaction states for debug mode - showing all steps setTransactionStates([ { transactionHash: "0x45bb2259631e73f32841a6058b0a4008c75bca296942bec6326d188978d5353d", explorerUrl: "https://polygonscan.com/tx/0x45bb2259631e73f32841a6058b0a4008c75bca296942bec6326d188978d5353d", chainId: 137, state: "pending", label: "Transfer", }, { transactionHash: "0x6ff30196ca0d4998cc6928bca2ec282766eb3c3997535e0a61e0d69c9c9b16b8", explorerUrl: "https://polygonscan.com/tx/0x6ff30196ca0d4998cc6928bca2ec282766eb3c3997535e0a61e0d69c9c9b16b8", chainId: 137, state: "pending", label: "Swap", }, ]) setPrepareSendQuote(dummyQuote) setCurrentScreen("pending") break case "pending-2-item-1-confirmed": // Set dummy transaction states for debug mode - showing all steps setTransactionStates([ { transactionHash: "0x45bb2259631e73f32841a6058b0a4008c75bca296942bec6326d188978d5353d", explorerUrl: "https://polygonscan.com/tx/0x45bb2259631e73f32841a6058b0a4008c75bca296942bec6326d188978d5353d", chainId: 137, state: "confirmed", label: "Transfer", }, { transactionHash: "0x6ff30196ca0d4998cc6928bca2ec282766eb3c3997535e0a61e0d69c9c9b16b8", explorerUrl: "https://polygonscan.com/tx/0x6ff30196ca0d4998cc6928bca2ec282766eb3c3997535e0a61e0d69c9c9b16b8", chainId: 137, state: "pending", label: "Swap", }, ]) setPrepareSendQuote(dummyQuote) setCurrentScreen("pending") break case "pending-2-item-2-confirmed": // Set dummy transaction states for debug mode - showing all steps setTransactionStates([ { transactionHash: "0x45bb2259631e73f32841a6058b0a4008c75bca296942bec6326d188978d5353d", explorerUrl: "https://polygonscan.com/tx/0x45bb2259631e73f32841a6058b0a4008c75bca296942bec6326d188978d5353d", chainId: 137, state: "confirmed", label: "Transfer", }, { transactionHash: "0x6ff30196ca0d4998cc6928bca2ec282766eb3c3997535e0a61e0d69c9c9b16b8", explorerUrl: "https://polygonscan.com/tx/0x6ff30196ca0d4998cc6928bca2ec282766eb3c3997535e0a61e0d69c9c9b16b8", chainId: 137, state: "confirmed", label: "Swap", }, ]) setPrepareSendQuote(dummyQuote) setCurrentScreen("pending") break case "pending-3-item-0-confirmed": // Set dummy transaction states for debug mode - showing all steps setTransactionStates([ { transactionHash: "0x45bb2259631e73f32841a6058b0a4008c75bca296942bec6326d188978d5353d", explorerUrl: "https://polygonscan.com/tx/0x45bb2259631e73f32841a6058b0a4008c75bca296942bec6326d188978d5353d", chainId: 137, state: "pending", label: "Transfer", }, { transactionHash: "0x6ff30196ca0d4998cc6928bca2ec282766eb3c3997535e0a61e0d69c9c9b16b8", explorerUrl: "https://polygonscan.com/tx/0x6ff30196ca0d4998cc6928bca2ec282766eb3c3997535e0a61e0d69c9c9b16b8", chainId: 137, state: "pending", label: "Swap & Bridge", }, { transactionHash: "0xf3b172111d2e64e9d4940d91097f04a0bbd0acc816e2cf49eec664c6f8fcaf76", explorerUrl: "https://arbiscan.io/tx/0xf3b172111d2e64e9d4940d91097f04a0bbd0acc816e2cf49eec664c6f8fcaf76", chainId: 42161, state: "pending", label: "Execute", }, ]) setPrepareSendQuote(dummyQuote) setCurrentScreen("pending") break case "pending-3-item-1-confirmed": // Set dummy transaction states for debug mode - showing all steps setTransactionStates([ { transactionHash: "0x45bb2259631e73f32841a6058b0a4008c75bca296942bec6326d188978d5353d", explorerUrl: "https://polygonscan.com/tx/0x45bb2259631e73f32841a6058b0a4008c75bca296942bec6326d188978d5353d", chainId: 137, state: "confirmed", label: "Transfer", }, { transactionHash: "0x6ff30196ca0d4998cc6928bca2ec282766eb3c3997535e0a61e0d69c9c9b16b8", explorerUrl: "https://polygonscan.com/tx/0x6ff30196ca0d4998cc6928bca2ec282766eb3c3997535e0a61e0d69c9c9b16b8", chainId: 137, state: "pending", label: "Swap & Bridge", }, { transactionHash: "0xf3b172111d2e64e9d4940d91097f04a0bbd0acc816e2cf49eec664c6f8fcaf76", explorerUrl: "https://arbiscan.io/tx/0xf3b172111d2e64e9d4940d91097f04a0bbd0acc816e2cf49eec664c6f8fcaf76", chainId: 42161, state: "pending", label: "Execute", }, ]) setPrepareSendQuote(dummyQuote) setCurrentScreen("pending") break case "pending-3-item-2-confirmed": // Set dummy transaction states for debug mode - showing all steps setTransactionStates([ { transactionHash: "0x45bb2259631e73f32841a6058b0a4008c75bca296942bec6326d188978d5353d", explorerUrl: "https://polygonscan.com/tx/0x45bb2259631e73f32841a6058b0a4008c75bca296942bec6326d188978d5353d", chainId: 137, state: "confirmed", label: "Transfer", }, { transactionHash: "0x6ff30196ca0d4998cc6928bca2ec282766eb3c3997535e0a61e0d69c9c9b16b8", explorerUrl: "https://polygonscan.com/tx/0x6ff30196ca0d4998cc6928bca2ec282766eb3c3997535e0a61e0d69c9c9b16b8", chainId: 137, state: "confirmed", label: "Swap & Bridge", }, { transactionHash: "0xf3b172111d2e64e9d4940d91097f04a0bbd0acc816e2cf49eec664c6f8fcaf76", explorerUrl: "https://arbiscan.io/tx/0xf3b172111d2e64e9d4940d91097f04a0bbd0acc816e2cf49eec664c6f8fcaf76", chainId: 42161, state: "pending", label: "Execute", }, ]) setPrepareSendQuote(dummyQuote) setCurrentScreen("pending") break case "pending-3-item-3-confirmed": // Set dummy transaction states for debug mode - showing all steps setTransactionStates([ { transactionHash: "0x45bb2259631e73f32841a6058b0a4008c75bca296942bec6326d188978d5353d", explorerUrl: "https://polygonscan.com/tx/0x45bb2259631e73f32841a6058b0a4008c75bca296942bec6326d188978d5353d", chainId: 137, state: "confirmed", label: "Transfer", }, { transactionHash: "0x6ff30196ca0d4998cc6928bca2ec282766eb3c3997535e0a61e0d69c9c9b16b8", explorerUrl: "https://polygonscan.com/tx/0x6ff30196ca0d4998cc6928bca2ec282766eb3c3997535e0a61e0d69c9c9b16b8", chainId: 137, state: "confirmed", label: "Swap & Bridge", }, { transactionHash: "0xf3b172111d2e64e9d4940d91097f04a0bbd0acc816e2cf49eec664c6f8fcaf76", explorerUrl: "https://arbiscan.io/tx/0xf3b172111d2e64e9d4940d91097f04a0bbd0acc816e2cf49eec664c6f8fcaf76", chainId: 42161, state: "confirmed", label: "Execute", }, ]) setPrepareSendQuote(dummyQuote) setCurrentScreen("pending") break case "pending-3-item-2-confirmed-with-error": // Set dummy transaction states for debug mode - second item has CallFailed event setTransactionStates([ { transactionHash: "0x45bb2259631e73f32841a6058b0a4008c75bca296942bec6326d188978d5353d", explorerUrl: "https://polygonscan.com/tx/0x45bb2259631e73f32841a6058b0a4008c75bca296942bec6326d188978d5353d", chainId: 137, state: "confirmed", label: "Transfer", }, { transactionHash: "0x6ff30196ca0d4998cc6928bca2ec282766eb3c3997535e0a61e0d69c9c9b16b8", explorerUrl: "https://polygonscan.com/tx/0x6ff30196ca0d4998cc6928bca2ec282766eb3c3997535e0a61e0d69c9c9b16b8", chainId: 137, state: "confirmed", label: "Swap & Bridge", decodedGuestModuleEvents: [ { type: "CallFailed", opHash: "0x6ff30196ca0d4998cc6928bca2ec282766eb3c3997535e0a61e0d69c9c9b16b8", index: BigInt(1), returnData: "0x", } as any, ], }, { transactionHash: "0xf3b172111d2e64e9d4940d91097f04a0bbd0acc816e2cf49eec664c6f8fcaf76", explorerUrl: "https://arbiscan.io/tx/0xf3b172111d2e64e9d4940d91097f04a0bbd0acc816e2cf49eec664c6f8fcaf76", chainId: 42161, state: "pending", label: "Execute", }, ]) setPrepareSendQuote(dummyQuote) setCurrentScreen("pending") break case "receipt": // Set dummy transaction states data for debug mode setTransactionStates([ { transactionHash: "0x45bb2259631e73f32841a6058b0a4008c75bca296942bec6326d188978d5353d", explorerUrl: "https://polygonscan.com/tx/0x45bb2259631e73f32841a6058b0a4008c75bca296942bec6326d188978d5353d", chainId: 137, state: "confirmed", label: "Transfer", }, { transactionHash: "0x6ff30196ca0d4998cc6928bca2ec282766eb3c3997535e0a61e0d69c9c9b16b8", explorerUrl: "https://polygonscan.com/tx/0x6ff30196ca0d4998cc6928bca2ec282766eb3c3997535e0a61e0d69c9c9b16b8", chainId: 137, state: "confirmed", label: "Swap & Bridge", }, { transactionHash: "0xf3b172111d2e64e9d4940d91097f04a0bbd0acc816e2cf49eec664c6f8fcaf76", explorerUrl: "https://arbiscan.io/tx/0xf3b172111d2e64e9d4940d91097f04a0bbd0acc816e2cf49eec664c6f8fcaf76", chainId: 42161, state: "confirmed", label: "Execute", }, ]) setCurrentScreen("receipt") break case "receipt-failed": // Set dummy transaction states data for debug mode setTransactionStates([ { transactionHash: "0x45bb2259631e73f32841a6058b0a4008c75bca296942bec6326d188978d5353d", explorerUrl: "https://polygonscan.com/tx/0x45bb2259631e73f32841a6058b0a4008c75bca296942bec6326d188978d5353d", chainId: 137, state: "confirmed", label: "Transfer", }, { transactionHash: "0x6ff30196ca0d4998cc6928bca2ec282766eb3c3997535e0a61e0d69c9c9b16b8", explorerUrl: "https://polygonscan.com/tx/0x6ff30196ca0d4998cc6928bca2ec282766eb3c3997535e0a61e0d69c9c9b16b8", chainId: 137, state: "confirmed", label: "Swap & Bridge", }, { transactionHash: "", explorerUrl: "", chainId: 42161, state: "failed", label: "Execute", }, ]) setCurrentScreen("receipt") break case "receipt-refunded": // Set dummy transaction states data for debug mode setTransactionStates([ { transactionHash: "0x45bb2259631e73f32841a6058b0a4008c75bca296942bec6326d188978d5353d", explorerUrl: "https://polygonscan.com/tx/0x45bb2259631e73f32841a6058b0a4008c75bca296942bec6326d188978d5353d", chainId: 137, state: "confirmed", label: "Transfer", }, { transactionHash: "0x6ff30196ca0d4998cc6928bca2ec282766eb3c3997535e0a61e0d69c9c9b16b8", explorerUrl: "https://polygonscan.com/tx/0x6ff30196ca0d4998cc6928bca2ec282766eb3c3997535e0a61e0d69c9c9b16b8", chainId: 137, state: "confirmed", label: "Swap & Bridge", }, { transactionHash: "0xf3b172111d2e64e9d4940d91097f04a0bbd0acc816e2cf49eec664c6f8fcaf76", explorerUrl: "https://arbiscan.io/tx/0xf3b172111d2e64e9d4940d91097f04a0bbd0acc816e2cf49eec664c6f8fcaf76", chainId: 42161, state: "confirmed", label: "Execute", decodedGuestModuleEvents: [ { type: "CallFailed", opHash: "0x6ff30196ca0d4998cc6928bca2ec282766eb3c3997535e0a61e0d69c9c9b16b8", index: BigInt(1), returnData: "0x", } as any, ], decodedTrailsTokenSweeperEvents: [ { type: "Sweep", token: "0x0000000000000000000000000000000000000000", recipient: "0x0000000000000000000000000000000000000000", amount: BigInt(1000000000000000000), } as any, ], refunded: true, }, ]) setCurrentScreen("receipt") break case "mesh-connect": setCurrentScreen("mesh-connect") break case "wallet-connect": setCurrentScreen("wallet-connect") break case "wallet-list": setCurrentScreen("wallet-list") break case "wallet-connection-pending": setSelectedWalletId("metamask") setCurrentScreen("wallet-connection-pending") break case "wallet-connection-pending-retry": setSelectedWalletId("metamask") setShowWalletConnectionRetry(true) setCurrentScreen("wallet-connection-pending") break case "fund-methods": setCurrentScreen("fund-methods") break case "earn": setCurrentMode("earn") setCurrentScreen("earn") break case "earn-pools": setCurrentScreen("earn-pools") break case "swap": setCurrentMode("swap") setSelectedToken(null) setTransactionStates([]) setCurrentScreen("swap") break case "receive": setCurrentMode("receive") setCurrentScreen("receive") break case "account-history": setSelectedToken(null) setTransactionStates([]) setCurrentScreen("account-history") break } }, [ setCurrentScreen, setSelectedToken, setTransactionStates, setPrepareSendQuote, setShowWalletConfirmRetry, setCurrentMode, setSelectedWalletId, setShowWalletConnectionRetry, setError, isConnected, ], ) return { handleDebugScreenSelect } }