From 3bb358ca554ed4d7724ae5e66b6371fc0f4b3f9b Mon Sep 17 00:00:00 2001 From: Shreerang Kale Date: Wed, 31 Jul 2024 14:05:20 +0530 Subject: [PATCH 1/3] Prevent infinite re-render of signRequest page --- src/screens/SignRequest.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/screens/SignRequest.tsx b/src/screens/SignRequest.tsx index 6f182bb..3f4fb79 100644 --- a/src/screens/SignRequest.tsx +++ b/src/screens/SignRequest.tsx @@ -2,6 +2,7 @@ import React, { useCallback, useEffect, useMemo, useState } from 'react'; import { Alert, Image, ScrollView, View } from 'react-native'; import { ActivityIndicator, Button, Text, Appbar } from 'react-native-paper'; import { SvgUri } from 'react-native-svg'; +import _ from 'lodash'; import { useNavigation } from '@react-navigation/native'; import { @@ -88,7 +89,7 @@ const SignRequest = ({ route }: SignRequestProps) => { return; } - if (requestAccount !== account) { + if (_.isEqual(requestAccount, account)) { setAccount(requestAccount); } if (requestMessage !== message) { -- 2.45.2 From 4ec452ca549bcd682caac0d96768d6f10a98329c Mon Sep 17 00:00:00 2001 From: Shreerang Kale Date: Wed, 31 Jul 2024 19:03:31 +0530 Subject: [PATCH 2/3] Remove checks while setting account and message details --- src/screens/SignRequest.tsx | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/src/screens/SignRequest.tsx b/src/screens/SignRequest.tsx index 3f4fb79..6653f05 100644 --- a/src/screens/SignRequest.tsx +++ b/src/screens/SignRequest.tsx @@ -2,7 +2,6 @@ import React, { useCallback, useEffect, useMemo, useState } from 'react'; import { Alert, Image, ScrollView, View } from 'react-native'; import { ActivityIndicator, Button, Text, Appbar } from 'react-native-paper'; import { SvgUri } from 'react-native-svg'; -import _ from 'lodash'; import { useNavigation } from '@react-navigation/native'; import { @@ -89,21 +88,13 @@ const SignRequest = ({ route }: SignRequestProps) => { return; } - if (_.isEqual(requestAccount, account)) { - setAccount(requestAccount); - } - if (requestMessage !== message) { - setMessage(decodeURIComponent(requestMessage)); - } - if (requestNamespace !== namespace) { - setNamespace(requestNamespace); - } - if (requestChainId !== chainId) { - setChainId(requestChainId); - } + setAccount(requestAccount); + setMessage(decodeURIComponent(requestMessage)); + setNamespace(requestNamespace); + setChainId(requestChainId); setIsLoading(false); }, - [account, message, navigation, namespace, chainId], + [navigation], ); const sanitizePath = useCallback( -- 2.45.2 From 7a2e426f31050ce863853dade812f4e61189d240 Mon Sep 17 00:00:00 2001 From: Shreerang Kale Date: Thu, 1 Aug 2024 12:37:35 +0530 Subject: [PATCH 3/3] Remove account sorting while sending namespaces object --- src/components/Accounts.tsx | 1 - src/components/PairingModal.tsx | 4 +--- src/utils/wallet-connect/helpers.ts | 32 ++++------------------------- 3 files changed, 5 insertions(+), 32 deletions(-) diff --git a/src/components/Accounts.tsx b/src/components/Accounts.tsx index 055a8c3..4897d82 100644 --- a/src/components/Accounts.tsx +++ b/src/components/Accounts.tsx @@ -60,7 +60,6 @@ const Accounts = () => { networksData, selectedNetwork!, accounts, - currentIndex, ); if (!updatedNamespaces) { diff --git a/src/components/PairingModal.tsx b/src/components/PairingModal.tsx index 5e335a8..73f3566 100644 --- a/src/components/PairingModal.tsx +++ b/src/components/PairingModal.tsx @@ -20,7 +20,7 @@ const PairingModal = ({ setModalVisible, setToastVisible, }: PairingModalProps) => { - const { accounts, currentIndex } = useAccounts(); + const { accounts } = useAccounts(); const { selectedNetwork, networksData } = useNetworks(); const [isLoading, setIsLoading] = useState(false); const [chainError, setChainError] = useState(''); @@ -103,7 +103,6 @@ const PairingModal = ({ networksData, selectedNetwork!, accounts, - currentIndex, ); setSupportedNamespaces(nameSpaces); } catch (err) { @@ -129,7 +128,6 @@ const PairingModal = ({ networksData, selectedNetwork, accounts, - currentIndex, web3wallet, setCurrentProposal, setModalVisible, diff --git a/src/utils/wallet-connect/helpers.ts b/src/utils/wallet-connect/helpers.ts index a732cc2..034cd39 100644 --- a/src/utils/wallet-connect/helpers.ts +++ b/src/utils/wallet-connect/helpers.ts @@ -40,7 +40,6 @@ export const getNamespaces = async ( networksData: NetworksDataState[], selectedNetwork: NetworksDataState, accounts: Account[], - currentIndex: number, ) => { const namespaceChainId = `${selectedNetwork.namespace}:${selectedNetwork.chainId}`; @@ -101,23 +100,6 @@ export const getNamespaces = async ( const requiredAddressesArray = await Promise.all(requiredAddressesPromise); const requiredAddresses = requiredAddressesArray.flat(); - let sortedAccounts = requiredAddresses; - - // If selected network is included in chains requested from dApp, - // Put selected account as first account - if (walletConnectChains.includes(namespaceChainId)) { - const currentAddresses = requiredAddresses.filter(address => - address.includes(namespaceChainId), - ); - sortedAccounts = [ - currentAddresses[currentIndex], - ...currentAddresses.filter((address, index) => index !== currentIndex), - ...requiredAddresses.filter( - address => !currentAddresses.includes(address), - ), - ]; - } - // construct namespace object const newNamespaces = { eip155: { @@ -133,7 +115,7 @@ export const getNamespaces = async ( ...(optionalNamespaces.eip155?.events ?? []), ...(requiredNamespaces.eip155?.events ?? []), ], - accounts: sortedAccounts.filter(account => account.includes(EIP155)), + accounts: requiredAddresses.filter(account => account.includes(EIP155)), }, cosmos: { chains: walletConnectChains.filter(chain => chain.includes(COSMOS)), @@ -147,18 +129,12 @@ export const getNamespaces = async ( ...(optionalNamespaces.cosmos?.events ?? []), ...(requiredNamespaces.cosmos?.events ?? []), ], - accounts: sortedAccounts.filter(account => account.includes(COSMOS)), + accounts: requiredAddresses.filter(account => account.includes(COSMOS)), }, }; return newNamespaces; } else { - // Set selected account as the first account in supported namespaces - const sortedAccounts = [ - accounts[currentIndex], - ...accounts.filter((account, index) => index !== currentIndex), - ]; - switch (selectedNetwork.namespace) { case EIP155: return { @@ -175,7 +151,7 @@ export const getNamespaces = async ( ...(optionalNamespaces.eip155?.events ?? []), ...(requiredNamespaces.eip155?.events ?? []), ], - accounts: sortedAccounts.map(ethAccount => { + accounts: accounts.map(ethAccount => { return `${namespaceChainId}:${ethAccount.address}`; }), }, @@ -200,7 +176,7 @@ export const getNamespaces = async ( ...(optionalNamespaces.cosmos?.events ?? []), ...(requiredNamespaces.cosmos?.events ?? []), ], - accounts: sortedAccounts.map(cosmosAccount => { + accounts: accounts.map(cosmosAccount => { return `${namespaceChainId}:${cosmosAccount.address}`; }), }, -- 2.45.2