@@ -10,15 +10,15 @@ export enum WalletPreference {
10
10
EOA = 'eoaOnly' ,
11
11
}
12
12
13
- function getConnector (
13
+ const getConnector = (
14
14
walletType : WalletPreference ,
15
15
connectors : GetConnectorsReturnType ,
16
- ) {
16
+ ) => {
17
17
if ( walletType === WalletPreference . SMART_WALLET ) {
18
18
return connectors [ 0 ] ;
19
19
}
20
20
return connectors [ 1 ] ;
21
- }
21
+ } ;
22
22
23
23
export function WalletType ( ) {
24
24
const { disconnectAsync } = useDisconnect ( ) ;
@@ -28,21 +28,30 @@ export function WalletType() {
28
28
29
29
const [ walletType , setWalletType ] = useState < WalletPreference > ( ) ;
30
30
31
- // Set localStorage ONLY when user has connected
32
- // otherwise, could result in walletType being set to smart wallet when user intended to connect eoa wallet
33
- useEffect ( ( ) => {
34
- if ( walletType && account . address ) {
35
- localStorage . setItem ( 'walletType' , walletType ) ;
36
- }
37
- } , [ walletType , account . address ] ) ;
38
-
39
31
useEffect ( ( ) => {
40
32
const storedWalletType = localStorage . getItem ( 'walletType' ) ;
41
33
if ( storedWalletType ) {
42
34
setWalletType ( storedWalletType as WalletPreference ) ;
43
35
}
44
36
} , [ ] ) ;
45
37
38
+ async function handleConnect ( value : WalletPreference ) {
39
+ console . log ( 'value:' , value ) ;
40
+ setWalletType ( value ) ;
41
+ connect (
42
+ {
43
+ connector : getConnector ( value as WalletPreference , connectors ) ,
44
+ } ,
45
+ {
46
+ // Set localStorage ONLY when user has connected
47
+ // otherwise, could result in walletType being set to smart wallet when user intended to connect eoa wallet
48
+ onSuccess : ( ) => {
49
+ localStorage . setItem ( 'walletType' , value ) ;
50
+ } ,
51
+ } ,
52
+ ) ;
53
+ }
54
+
46
55
async function clearWalletType ( ) {
47
56
localStorage . removeItem ( 'walletType' ) ;
48
57
setWalletType ( undefined ) ;
@@ -61,12 +70,7 @@ export function WalletType() {
61
70
id = "wallet-type"
62
71
value = { walletType }
63
72
className = "flex items-center justify-between"
64
- onValueChange = { ( value ) => {
65
- setWalletType ( value as WalletPreference ) ;
66
- connect ( {
67
- connector : getConnector ( value as WalletPreference , connectors ) ,
68
- } ) ;
69
- } }
73
+ onValueChange = { handleConnect }
70
74
>
71
75
< div className = "flex items-center gap-2" >
72
76
< Label
0 commit comments