diff --git a/apps/web/src/composables/contracts.ts b/apps/web/src/composables/contracts.ts index 20a8311a7..c2e15f0a1 100644 --- a/apps/web/src/composables/contracts.ts +++ b/apps/web/src/composables/contracts.ts @@ -47,7 +47,7 @@ export default function useContracts() { const { getCurrentPrice } = usePrice() const { getEthersTrezorSigner } = useTrezor() const { user } = useUsers() - const { getEthersWalletConnectSignerV2 } = useWalletConnectV2() + const { walletConnectSigner } = useWalletConnectV2() const stakeDepositedListener = async () => await refreshBreakdown() const stakeRebalancedListener = async () => await refreshBreakdown() @@ -59,17 +59,15 @@ export default function useContracts() { 'Browser': getEthersBrowserSigner, 'Ledger': getEthersLedgerSigner, 'Trezor': getEthersTrezorSigner, - 'WalletConnect': getEthersWalletConnectSignerV2 } - console.log('amount :>> ', amount) - console.log('walletProvider :>> ', walletProvider) - console.log('signerCreators :>> ', signerCreators) - return const signerType = ethersProviderList.includes(walletProvider) ? 'Browser' : walletProvider const signerCreator = signerCreators[signerType as keyof typeof signerCreators] - let signer = signerCreator(walletProvider) - // if (isWalletConnectSigner(signer)) signer = await signer - signer = await signer + let signer + if (walletProvider === 'WalletConnect') { + signer = walletConnectSigner + } else { + signer = signerCreator(walletProvider) + } console.log('signer in deposit :>> ', signer) const managerSigner = manager.connect(signer as ethers.Signer) const fees = await getDepositFees() @@ -385,13 +383,17 @@ export default function useContracts() { const signerCreators = { 'Browser': getEthersBrowserSigner, 'Ledger': getEthersLedgerSigner, - 'Trezor': getEthersTrezorSigner, - 'WalletConnect': getEthersWalletConnectSignerV2 + 'Trezor': getEthersTrezorSigner } const signerType = ethersProviderList.includes(walletProvider) ? 'Browser' : walletProvider const signerCreator = signerCreators[signerType as keyof typeof signerCreators] - const signer = signerCreator(walletProvider) - // if (isWalletConnectSigner(signer)) signer = await signer + let signer + if (walletProvider === 'WalletConnect') { + signer = walletConnectSigner + } else { + signer = signerCreator(walletProvider) + } + console.log('signer in registerOperatorWithCasimir :>> ', signer) const result = await registry.connect(signer as ethers.Signer).registerOperator(operatorId, { from: address, value: ethers.utils.parseEther(value)}) await result.wait() return true @@ -446,12 +448,16 @@ export default function useContracts() { 'Browser': getEthersBrowserSigner, 'Ledger': getEthersLedgerSigner, 'Trezor': getEthersTrezorSigner, - 'WalletConnect': getEthersWalletConnectSignerV2 } const signerType = ['MetaMask', 'CoinbaseWallet'].includes(walletProvider) ? 'Browser' : walletProvider const signerCreator = signerCreators[signerType as keyof typeof signerCreators] - const signer = signerCreator(walletProvider) - // if (isWalletConnectSigner(signer)) signer = await signer + let signer + if (walletProvider === 'WalletConnect') { + signer = walletConnectSigner + } else { + signer = signerCreator(walletProvider) + } + console.log('signer in withdraw :>> ', signer) const managerSigner = manager.connect(signer as ethers.Signer) const value = ethers.utils.parseEther(amount) // const withdrawableBalance = await manager.getWithdrawableBalance() diff --git a/apps/web/src/composables/walletConnectV2.ts b/apps/web/src/composables/walletConnectV2.ts index 5b35467e9..7f0600b3f 100644 --- a/apps/web/src/composables/walletConnectV2.ts +++ b/apps/web/src/composables/walletConnectV2.ts @@ -1,4 +1,4 @@ -import { ref, onMounted, onBeforeUnmount } from 'vue' +import { ref, onMounted, onBeforeUnmount, onUnmounted } from 'vue' import Client from '@walletconnect/sign-client' import { ethers, providers } from 'ethers' import { apiGetChainNamespace, ChainsMap } from 'caip-api' @@ -17,11 +17,12 @@ const client = ref(null) let cleanupFunctions: Array = [] // TODO: Potentially fix type here. const ethereumProvider = ref(null) const hasCheckedPersistedSession = ref(false) -const isInitializing = ref(false) +const componentIsMounted = ref(false) const pairings = ref([]) const session = ref(null) -const walletConnectWeb3Provider = ref(null) const walletConnectAddresses = ref([]) +const walletConnectWeb3Provider = ref(null) +const walletConnectSigner = ref(null) const web3Modal = ref(null) @@ -91,9 +92,10 @@ export default function useWalletConnectV2() { } } - function getEthersWalletConnectSignerV2(): ethers.Signer | null { - return walletConnectWeb3Provider.value?.getSigner() || null - } + // function getEthersWalletConnectSignerV2(): ethers.Signer | null { + // walletConnectSigner.value = walletConnectWeb3Provider.value?.getSigner() + // return walletConnectWeb3Provider.value?.getSigner() || null + // } async function loginWithWalletConnectV2(loginCredentials: LoginCredentials) { const { provider, address, currency } = loginCredentials @@ -118,6 +120,9 @@ export default function useWalletConnectV2() { }) onMounted(async () => { + if (componentIsMounted.value) return + componentIsMounted.value = true + // Load chain data await loadChainData() @@ -139,6 +144,10 @@ export default function useWalletConnectV2() { } }) + onUnmounted(() => { + componentIsMounted.value = false + }) + async function signWalletConnectMessage(message: string) : Promise{ try { const signer = walletConnectWeb3Provider.value?.getSigner() @@ -152,9 +161,9 @@ export default function useWalletConnectV2() { return { walletConnectAddresses, + walletConnectSigner, walletConnectWeb3Provider, connectWalletConnectV2, - getEthersWalletConnectSignerV2, loginWithWalletConnectV2 } } @@ -179,8 +188,6 @@ async function _checkForPersistedSession() { } async function createClient() { - isInitializing.value = true - if (!DEFAULT_PROJECT_ID) { console.log('There is no project ID set for WalletConnect') return @@ -203,6 +210,7 @@ async function createClient() { function createWeb3Provider(provider: UniversalProvider) { walletConnectWeb3Provider.value = new providers.Web3Provider(provider) + walletConnectSigner.value = walletConnectWeb3Provider.value?.getSigner() } async function loadChainData() {