@@ -32,8 +32,6 @@ export const ConnectMetmask = ({}: ConnectMetmaskProps) => {
3232 } ) )
3333 ) ;
3434 const isLoading = provider . loading || network . loading || address . loading || balance . loading ;
35- const isActive =
36- provider . data && ARBITRUM_NETWORK . some ( ( item ) => item . chainId === network . data ) && address . data && balance . data ;
3735
3836 /**
3937 * 1. user가 arbitrum chain에 연결되어 있다면 user의 현재 network 정보를 가져오고, project의 network를 user의 network로 변경
@@ -42,6 +40,7 @@ export const ConnectMetmask = ({}: ConnectMetmaskProps) => {
4240 */
4341 const getAccountInfo = async ( ) => {
4442 const networkFetched = await fetchNetwork ( ) ;
43+ console . log ( "networkFetched" , networkFetched ) ;
4544 const arbitrumNetwork = ARBITRUM_NETWORK . find ( ( item ) => item . chainId === networkFetched ) ;
4645 if ( arbitrumNetwork ) {
4746 project . setNetwork ( arbitrumNetwork ) ;
@@ -52,6 +51,19 @@ export const ConnectMetmask = ({}: ConnectMetmaskProps) => {
5251 }
5352 } ;
5453
54+ const removePermission = async ( ) => {
55+ if ( provider . data ) {
56+ try {
57+ await provider . data . request ( {
58+ method : "wallet_requestPermissions" ,
59+ params : [ { eth_accounts : { } , "endowment:permitted-chains" : { } } ] ,
60+ } ) ;
61+ } catch ( error ) {
62+ console . log ( error ) ;
63+ }
64+ }
65+ } ;
66+
5567 const traceSwitchProjectNetwork = async ( ) => {
5668 await switchNetwork ( project . network . data . chainId ) ;
5769 await fetchAddress ( ) ;
@@ -92,20 +104,6 @@ export const ConnectMetmask = ({}: ConnectMetmaskProps) => {
92104 await fetchNetwork ( ) ;
93105 }
94106 } ;
95- const traceSwitchAccount = async ( accounts : unknown ) => {
96- if ( Array . isArray ( accounts ) && accounts . length > 0 ) {
97- await fetchAddress ( ) ;
98- await fetchBalance ( ) ;
99- }
100- } ;
101- const traceSwitchNetwork = async ( chainId : unknown ) => {
102- if ( typeof chainId === "string" ) {
103- const targetNetwork = ARBITRUM_NETWORK . find ( ( network ) => network . chainId === chainId ) ;
104- if ( ! targetNetwork ) return ;
105- project . setNetwork ( targetNetwork ) ;
106- await fetchBalance ( ) ;
107- }
108- } ;
109107
110108 useEffect ( ( ) => {
111109 if ( ! provider . data ) {
@@ -115,24 +113,22 @@ export const ConnectMetmask = ({}: ConnectMetmaskProps) => {
115113
116114 getAccountInfo ( ) ;
117115
118- provider . data . on ( "accountsChanged" , traceSwitchAccount ) ;
119- provider . data . on ( "chainChanged" , traceSwitchNetwork ) ;
116+ // window.addEventListener("message", traceSwitchNetwork);
120117
121- return ( ) => {
122- if ( ! provider . data ) return ;
123- provider . data . removeListener ( "accountsChanged" , traceSwitchAccount ) ;
124- provider . data . removeListener ( "chainChanged" , traceSwitchNetwork ) ;
125- } ;
118+ // return () => {
119+ // window.removeEventListener("message", traceSwitchNetwork);
120+ // };
126121 } , [ ] ) ;
127122
128123 return (
129124 < div className = "flex flex-col gap-2" >
130125 < Button
131- className = { `px-[1.25rem] py-[0.75rem] w-full relative flex justify-center items-center ${
132- isActive ? "bg-metamask-active" : "bg-metamask-default"
133- } border-0 rounded-sm overflow-hidden`}
126+ className = { `px-[1.25rem] py-[0.75rem] w-full relative flex justify-center items-center bg-metamask-default border-0 rounded-sm overflow-hidden` }
134127 disabled = { isLoading }
135- onClick = { getAccountInfo }
128+ onClick = { async ( ) => {
129+ await removePermission ( ) ;
130+ await getAccountInfo ( ) ;
131+ } }
136132 >
137133 < img className = "w-[25px] mr-[10px]" src = { metamask } alt = "metamask" />
138134 < b > Connect to MetaMask</ b >
0 commit comments