From ad636e5847380782031abc3593e4c5da5908318b Mon Sep 17 00:00:00 2001 From: AdityaSalunkhe21 Date: Thu, 10 Apr 2025 14:15:17 +0530 Subject: [PATCH] Implement common hooks instead of SignRequestHandler component --- src/App.tsx | 5 ++- .../useSignRequestHandler.ts} | 40 ++++++++++++------- src/screens/HomeScreen.tsx | 5 ++- 3 files changed, 31 insertions(+), 19 deletions(-) rename src/{components/SignRequestHandler.tsx => hooks/useSignRequestHandler.ts} (90%) diff --git a/src/App.tsx b/src/App.tsx index d6a52ec..5fcfcaa 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -40,7 +40,7 @@ import { WalletEmbed } from "./screens/WalletEmbed"; import { AutoSignIn } from "./screens/AutoSignIn"; import { checkSufficientFunds, getPathKey, sendMessage } from "./utils/misc"; import useAccountsData from "./hooks/useAccountsData"; -import { SignRequestAndroid } from "./components/SignRequestHandler"; +import { useSignRequestHandler } from "./hooks/useSignRequestHandler"; const Stack = createStackNavigator(); @@ -302,6 +302,8 @@ const App = (): React.JSX.Element => { const showWalletConnect = useMemo(() => accounts.length > 0, [accounts]); + useSignRequestHandler(); + return ( { > Session approved - ); }; diff --git a/src/components/SignRequestHandler.tsx b/src/hooks/useSignRequestHandler.ts similarity index 90% rename from src/components/SignRequestHandler.tsx rename to src/hooks/useSignRequestHandler.ts index f0dfed1..4735717 100644 --- a/src/components/SignRequestHandler.tsx +++ b/src/hooks/useSignRequestHandler.ts @@ -1,23 +1,16 @@ -import React, { useState, useEffect, useRef, useCallback } from 'react'; +import { useState, useEffect, useRef, useCallback } from 'react'; import { useNavigation } from '@react-navigation/native'; import { NativeStackNavigationProp } from '@react-navigation/native-stack'; import { useAccounts } from '../context/AccountsContext'; import { useNetworks } from '../context/NetworksContext'; import { StackParamsList } from '../types'; -import useGetOrCreateAccounts from '../hooks/useGetOrCreateAccounts'; +import useGetOrCreateAccounts from './useGetOrCreateAccounts'; -export const SignRequestAndroid: React.FC = () => { - const navigation = useNavigation>(); - const { accounts, currentIndex } = useAccounts(); +export const useSignRequestData = () => { const { selectedNetwork } = useNetworks(); - - const pendingMessageRef = useRef(null); + const { accounts, currentIndex } = useAccounts(); const [isDataReady, setIsDataReady] = useState(false); - // Run on mount - useGetOrCreateAccounts(); - - // Check if data is ready useEffect(() => { const logData = { selectedNetwork: selectedNetwork ? { @@ -38,7 +31,14 @@ export const SignRequestAndroid: React.FC = () => { } }, [selectedNetwork, accounts, currentIndex]); - // Handle navigation to SignRequest screen + return { isDataReady, selectedNetwork, accounts, currentIndex }; +}; + +export const useSignRequestNavigation = () => { + const navigation = useNavigation>(); + const { isDataReady, selectedNetwork, accounts, currentIndex } = useSignRequestData(); + const pendingMessageRef = useRef(null); + const navigateToSignRequest = useCallback(async (message: string) => { const logData = { isDataReady, @@ -163,7 +163,12 @@ export const SignRequestAndroid: React.FC = () => { } }, [isDataReady, navigateToSignRequest]); - // Setup Android bridge and message handler + return { navigateToSignRequest }; +}; + +export const useAndroidBridge = () => { + const { navigateToSignRequest } = useSignRequestNavigation(); + useEffect(() => { window.receiveSignRequestFromAndroid = (message: string) => { console.log('Sign request received with message:', message); @@ -190,6 +195,11 @@ export const SignRequestAndroid: React.FC = () => { window.receiveCreateOrGetAccountsRequestFromAndroid = undefined; }; }, [navigateToSignRequest]); - - return null; +}; + +export const useSignRequestHandler = () => { + useGetOrCreateAccounts(); + useSignRequestData(); + useSignRequestNavigation(); + useAndroidBridge(); }; diff --git a/src/screens/HomeScreen.tsx b/src/screens/HomeScreen.tsx index 1ce9dc3..17fa788 100644 --- a/src/screens/HomeScreen.tsx +++ b/src/screens/HomeScreen.tsx @@ -18,7 +18,7 @@ import { useNetworks } from "../context/NetworksContext"; import ImportWalletDialog from "../components/ImportWalletDialog"; import { MnemonicDialog } from "../components/MnemonicDialog"; import { Container } from "../components/Container"; -import { SignRequestAndroid } from '../components/SignRequestHandler'; +import { useSignRequestHandler } from '../hooks/useSignRequestHandler'; import useGetOrCreateAccounts from '../hooks/useGetOrCreateAccounts'; import { IS_IMPORT_WALLET_ENABLED } from "../utils/constants"; @@ -142,6 +142,8 @@ const HomeScreen = () => { setCurrentIndex(0); }; + useSignRequestHandler(); + return ( @@ -185,7 +187,6 @@ const HomeScreen = () => { )} )} - setImportWalletDialog(false)}