From 531412c546189c1181602e0d82c128403604aa9c Mon Sep 17 00:00:00 2001 From: Vinicius Stevam Date: Thu, 13 Jun 2024 09:01:10 +0100 Subject: [PATCH 1/4] potential fix to android detox e2e issue --- src/connections.js | 34 +++++++++++++++++++++++++++------- src/index.js | 10 +++++----- 2 files changed, 32 insertions(+), 12 deletions(-) diff --git a/src/connections.js b/src/connections.js index e9228f88..4b8c1798 100644 --- a/src/connections.js +++ b/src/connections.js @@ -1,5 +1,4 @@ import { MetaMaskSDK } from '@metamask/sdk'; -import { createWeb3Modal, defaultConfig } from '@web3modal/ethers5'; import { handleNewAccounts, handleNewProviderDetail, @@ -16,12 +15,33 @@ const dappMetadata = { url: 'https://metamask.github.io/test-dapp/', }; +// eslint-disable-next-line require-unicode-regexp +const isAndroid = /Android/i.test(navigator.userAgent); + const sdk = new MetaMaskSDK({ dappMetadata }); -export const walletConnect = createWeb3Modal({ - ethersConfig: defaultConfig({ metadata: dappMetadata }), - projectId: 'e6360eaee594162688065f1c70c863b7', // test id -}); +export const initializeWeb3Modal = () => { + if (isAndroid) { + try { + // eslint-disable-next-line node/global-require + const { createWeb3Modal, defaultConfig } = require('@web3modal/ethers5'); + + const web3Modal = createWeb3Modal({ + ethersConfig: defaultConfig({ metadata: dappMetadata }), + }); + + console.log('Web3Modal initialized successfully on Android'); + return web3Modal; + } catch (error) { + console.error('Error initializing Web3Modal:', error); + } + } + + console.log('Web3Modal is not initialized as the platform is not Android'); + return null; +}; + +export const walletConnect = initializeWeb3Modal(); function _setProviderDetail(provider, name, uuid) { const providerDetail = { @@ -51,7 +71,7 @@ export async function handleSdkConnect(name, button, isConnected) { const provider = sdk.getProvider(); const uuid = sdk.getChannelId(); const providerDetail = _setProviderDetail(provider, name, uuid); - setActiveProviderDetail(providerDetail); + await setActiveProviderDetail(providerDetail); handleNewProviderDetail(providerDetail); updateSdkConnectionState(true); button.innerText = 'Sdk Connect - Disconnect'; @@ -84,7 +104,7 @@ export async function handleWalletConnect(name, button, isConnected) { const { provider } = walletConnect.getWalletProvider(); const uuid = provider.signer.uri; const providerDetail = _setProviderDetail(provider, name, uuid); - setActiveProviderDetail(providerDetail); + await setActiveProviderDetail(providerDetail); handleNewProviderDetail(providerDetail); updateWalletConnectState(true); button.innerText = 'Wallet Connect - Disconnect'; diff --git a/src/index.js b/src/index.js index 896c4622..6f8eb22d 100644 --- a/src/index.js +++ b/src/index.js @@ -554,7 +554,7 @@ const detectEip6963 = () => { export const setActiveProviderDetail = async (providerDetail) => { closeProvider(); provider = providerDetail.provider; - initializeProvider(); + await initializeProvider(); try { const newAccounts = await provider.request({ @@ -574,7 +574,7 @@ export const setActiveProviderDetail = async (providerDetail) => { updateFormElements(); }; -const setActiveProviderDetailWindowEthereum = () => { +const setActiveProviderDetailWindowEthereum = async () => { const providerDetail = { info: { uuid: '', @@ -584,7 +584,7 @@ const setActiveProviderDetailWindowEthereum = () => { provider: window.ethereum, }; - setActiveProviderDetail(providerDetail); + await setActiveProviderDetail(providerDetail); }; const existsProviderDetail = (newProviderDetail) => { @@ -3349,9 +3349,9 @@ const setDeeplinks = () => { */ const initialize = async () => { - setActiveProviderDetailWindowEthereum(); + await setActiveProviderDetailWindowEthereum(); detectEip6963(); - setActiveProviderDetail(providerDetails[0]); + await setActiveProviderDetail(providerDetails[0]); initializeFormElements(); setDeeplinks(); }; From 24f80fcd0abacb6969a01c42781528b8a4c4de62 Mon Sep 17 00:00:00 2001 From: Vinicius Stevam <45455812+vinistevam@users.noreply.github.com> Date: Thu, 13 Jun 2024 15:03:23 +0100 Subject: [PATCH 2/4] Apply suggestions from code review Co-authored-by: seaona <54408225+seaona@users.noreply.github.com> --- src/connections.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/connections.js b/src/connections.js index 4b8c1798..33c9d3ca 100644 --- a/src/connections.js +++ b/src/connections.js @@ -21,13 +21,14 @@ const isAndroid = /Android/i.test(navigator.userAgent); const sdk = new MetaMaskSDK({ dappMetadata }); export const initializeWeb3Modal = () => { - if (isAndroid) { + if (!isAndroid) { try { // eslint-disable-next-line node/global-require const { createWeb3Modal, defaultConfig } = require('@web3modal/ethers5'); const web3Modal = createWeb3Modal({ ethersConfig: defaultConfig({ metadata: dappMetadata }), + projectId: 'e6360eaee594162688065f1c70c863b7', // test id }); console.log('Web3Modal initialized successfully on Android'); From 4480c93fd93920b6e5a95194a11090167ffd34c3 Mon Sep 17 00:00:00 2001 From: Vinicius Stevam <45455812+vinistevam@users.noreply.github.com> Date: Fri, 14 Jun 2024 08:35:11 +0100 Subject: [PATCH 3/4] Update src/connections.js Co-authored-by: seaona <54408225+seaona@users.noreply.github.com> --- src/connections.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections.js b/src/connections.js index 33c9d3ca..d69ccda8 100644 --- a/src/connections.js +++ b/src/connections.js @@ -38,7 +38,7 @@ export const initializeWeb3Modal = () => { } } - console.log('Web3Modal is not initialized as the platform is not Android'); + console.log('Web3Modal is not initialized as the platform is Android'); return null; }; From e9bcbe89878bb4c68a82b5f17a25c975a14adda0 Mon Sep 17 00:00:00 2001 From: Vinicius Stevam Date: Fri, 14 Jun 2024 08:50:28 +0100 Subject: [PATCH 4/4] improve logs --- src/connections.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/connections.js b/src/connections.js index d69ccda8..c0f8133f 100644 --- a/src/connections.js +++ b/src/connections.js @@ -28,17 +28,17 @@ export const initializeWeb3Modal = () => { const web3Modal = createWeb3Modal({ ethersConfig: defaultConfig({ metadata: dappMetadata }), - projectId: 'e6360eaee594162688065f1c70c863b7', // test id + projectId: 'e6360eaee594162688065f1c70c863b7', }); - console.log('Web3Modal initialized successfully on Android'); + console.log('Web3Modal initialized successfully'); return web3Modal; } catch (error) { - console.error('Error initializing Web3Modal:', error); + console.error('Error initializing Web3Modal', error); } } - console.log('Web3Modal is not initialized as the platform is Android'); + console.log('Web3Modal is not initialized'); return null; };