@@ -5,6 +5,7 @@ import { BigNumber, PopulatedTransaction, utils } from 'ethers';
55import React , { ReactElement , useEffect , useState } from 'react' ;
66import { useIsContractAddress } from 'src/hooks/useIsContractAddress' ;
77import { useRootStore } from 'src/store/root' ;
8+ import { WalletType } from 'src/store/walletSlice' ;
89import { wagmiConfig } from 'src/ui-config/wagmiConfig' ;
910import { hexToAscii } from 'src/utils/utils' ;
1011import { UserRejectedRequestError } from 'viem' ;
@@ -49,8 +50,8 @@ export const Web3ContextProvider: React.FC<{ children: ReactElement }> = ({ chil
4950
5051 const [ readOnlyModeAddress , setReadOnlyModeAddress ] = useState < string | undefined > ( ) ;
5152 const [ switchNetworkError , setSwitchNetworkError ] = useState < Error > ( ) ;
52- const [ setAccount , setConnectedAccountIsContract ] = useRootStore (
53- useShallow ( ( store ) => [ store . setAccount , store . setConnectedAccountIsContract ] )
53+ const [ setAccount , setConnectedAccountType ] = useRootStore (
54+ useShallow ( ( store ) => [ store . setAccount , store . setConnectedAccountType ] )
5455 ) ;
5556
5657 const account = address ;
@@ -60,7 +61,9 @@ export const Web3ContextProvider: React.FC<{ children: ReactElement }> = ({ chil
6061 currentAccount = readOnlyModeAddress ;
6162 }
6263
63- const { data : isContractAddress } = useIsContractAddress ( account || '' , chainId ) ;
64+ const { data } = useIsContractAddress ( account || '' , chainId ) ;
65+ const isContractAddress = data ?. isContract ;
66+ const isSafeWallet = data ?. isSafeWallet ;
6467
6568 useEffect ( ( ) => {
6669 if ( didInit ) {
@@ -187,14 +190,16 @@ export const Web3ContextProvider: React.FC<{ children: ReactElement }> = ({ chil
187190
188191 useEffect ( ( ) => {
189192 if ( ! account ) {
190- setConnectedAccountIsContract ( false ) ;
193+ setConnectedAccountType ( WalletType . EOA ) ;
191194 return ;
192195 }
193196
194197 if ( isContractAddress ) {
195- setConnectedAccountIsContract ( true ) ;
198+ setConnectedAccountType ( WalletType . CONTRACT ) ;
199+ } else if ( isSafeWallet ) {
200+ setConnectedAccountType ( WalletType . SAFE ) ;
196201 }
197- } , [ isContractAddress , setConnectedAccountIsContract , account ] ) ;
202+ } , [ isContractAddress , setConnectedAccountType , account ] ) ;
198203
199204 return (
200205 < Web3Context . Provider
0 commit comments