From 6c9186dbffec7ed502c4f1dedb0fd2f24c365423 Mon Sep 17 00:00:00 2001 From: aniket866 Date: Fri, 23 Jan 2026 13:27:33 +0530 Subject: [PATCH 1/2] added useMemo to the Memoize NetworkContext.jsx --- stablepay-sdk/src/contexts/NetworkContext.jsx | 51 +++++++++++-------- 1 file changed, 31 insertions(+), 20 deletions(-) diff --git a/stablepay-sdk/src/contexts/NetworkContext.jsx b/stablepay-sdk/src/contexts/NetworkContext.jsx index 4b60ebd..51b927d 100644 --- a/stablepay-sdk/src/contexts/NetworkContext.jsx +++ b/stablepay-sdk/src/contexts/NetworkContext.jsx @@ -1,4 +1,4 @@ -import React, { createContext, useState, useContext, useEffect } from 'react'; +import React, { createContext, useState, useContext, useEffect, useMemo, useCallback } from 'react'; import { TokenSelector } from '../core/TokenSelector'; const NetworkContext = createContext(); @@ -9,52 +9,63 @@ export const NetworkProvider = ({ children, networkSelector }) => { const [selectedToken, setSelectedToken] = useState(null); const [transactionDetails, setTransactionDetails] = useState(null); - const resetState = () => { + const resetState = useCallback(() => { setSelectedToken(null); setTransactionDetails(null); - }; + }, []); - const selectNetwork = (networkKey) => { + const selectNetwork = useCallback((networkKey) => { if (networkSelector.selectNetwork(networkKey)) { setSelectedNetwork(networkKey); resetState(); return true; } return false; - }; + }, [networkSelector, resetState]); - const selectToken = (tokenKey) => { + const selectToken = useCallback((tokenKey) => { if (tokenSelector.selectToken(tokenKey)) { const token = tokenSelector.getSelectedToken(); setSelectedToken(token); return true; } return false; - }; + }, [tokenSelector]); - const resetSelections = () => { + const resetSelections = useCallback(() => { networkSelector.selectNetwork(null); setSelectedNetwork(null); resetState(); - }; + }, [networkSelector, resetState]); // Synchronize context state with NetworkSelector useEffect(() => { setSelectedNetwork(networkSelector.selectedNetwork); }, [networkSelector.selectedNetwork]); + const contextValue = useMemo(() => ({ + networkSelector, + tokenSelector, + selectedNetwork, + selectedToken, + transactionDetails, + setTransactionDetails, + selectNetwork, + selectToken, + resetSelections + }), [ + networkSelector, + tokenSelector, + selectedNetwork, + selectedToken, + transactionDetails, + selectNetwork, + selectToken, + resetSelections + ]); + return ( - + {children} ); From caea4c7b227585f95f535bb6a12151cd9ea89bee Mon Sep 17 00:00:00 2001 From: aniket866 Date: Fri, 23 Jan 2026 13:59:08 +0530 Subject: [PATCH 2/2] Check window.ethereum.chainId before instantiating the viem client --- stablepay-sdk/src/contexts/WalletContext.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stablepay-sdk/src/contexts/WalletContext.jsx b/stablepay-sdk/src/contexts/WalletContext.jsx index b7e51ee..f2a1d76 100644 --- a/stablepay-sdk/src/contexts/WalletContext.jsx +++ b/stablepay-sdk/src/contexts/WalletContext.jsx @@ -218,7 +218,7 @@ export const WalletProvider = ({ children }) => { } try { - const chainIdHex = await window.ethereum.request({ method: 'eth_chainId' }); + const chainIdHex = window.ethereum.chainId || await window.ethereum.request({ method: 'eth_chainId' }); const currentChainId = parseInt(chainIdHex, 16); if (currentChainId !== expectedChainId) {