@@ -17,27 +17,34 @@ declare const window: CustomWindow
17
17
18
18
const UNSUPPORTED_METHOD = null
19
19
20
+ function getInjectedInterface (
21
+ identity : string
22
+ ) : ( ) => Promise < { provider : EIP1193Provider } > {
23
+ return async ( ) => ( {
24
+ provider : ( window . ethereum . providers &&
25
+ Array . isArray ( window . ethereum . providers )
26
+ ? window . ethereum . providers . find ( provider => ! ! provider [ identity ] )
27
+ : window . ethereum ) as EIP1193Provider
28
+ } )
29
+ }
30
+
20
31
const metamask : InjectedWalletModule = {
21
32
label : ProviderLabel . MetaMask ,
22
33
injectedNamespace : InjectedNameSpace . Ethereum ,
23
34
checkProviderIdentity : ( { provider } ) =>
24
35
! ! provider && ! ! provider [ ProviderIdentityFlag . MetaMask ] ,
25
36
getIcon : async ( ) => ( await import ( './icons/metamask.js' ) ) . default ,
26
- getInterface : async ( ) => ( {
27
- provider : window . ethereum as EIP1193Provider
28
- } ) ,
37
+ getInterface : getInjectedInterface ( ProviderIdentityFlag . MetaMask ) ,
29
38
platforms : [ 'all' ]
30
39
}
31
40
32
41
const brave : InjectedWalletModule = {
33
42
label : ProviderLabel . Brave ,
34
43
injectedNamespace : InjectedNameSpace . Ethereum ,
35
- checkProviderIdentity : ( { provider } ) =>
44
+ checkProviderIdentity : ( { provider } ) =>
36
45
! ! provider && ! ! provider [ ProviderIdentityFlag . BraveWallet ] ,
37
46
getIcon : async ( ) => ( await import ( './icons/brave.js' ) ) . default ,
38
- getInterface : async ( ) => ( {
39
- provider : window . ethereum as EIP1193Provider
40
- } ) ,
47
+ getInterface : getInjectedInterface ( ProviderIdentityFlag . BraveWallet ) ,
41
48
platforms : [ 'all' ]
42
49
}
43
50
@@ -109,7 +116,10 @@ const coinbase: InjectedWalletModule = {
109
116
! ! provider . providers [ 0 ] [ ProviderIdentityFlag . CoinbaseExtension ] ) ,
110
117
getIcon : async ( ) => ( await import ( './icons/coinbase.js' ) ) . default ,
111
118
getInterface : async ( ) => {
112
- const provider = window . ethereum as EIP1193Provider
119
+ const { provider } = await getInjectedInterface (
120
+ ProviderIdentityFlag . CoinbaseExtension
121
+ ) ( )
122
+
113
123
const addListener : SimpleEventEmitter [ 'on' ] = provider . on . bind ( provider )
114
124
provider . on = ( event , func ) => {
115
125
// intercept chainChanged event and format string
@@ -231,18 +241,13 @@ const bitpie: InjectedWalletModule = {
231
241
platforms : [ 'mobile' ]
232
242
}
233
243
234
- const blankwallet : InjectedWalletModule = {
235
- label : ProviderLabel . BlankWallet ,
244
+ const blockwallet : InjectedWalletModule = {
245
+ label : ProviderLabel . BlockWallet ,
236
246
injectedNamespace : InjectedNameSpace . Ethereum ,
237
247
checkProviderIdentity : ( { provider } ) =>
238
- ! ! provider && ! ! provider [ ProviderIdentityFlag . BlankWallet ] ,
239
- getIcon : async ( ) => ( await import ( './icons/blankwallet.js' ) ) . default ,
240
- getInterface : async ( ) => ( {
241
- provider : createEIP1193Provider ( window . ethereum , {
242
- wallet_switchEthereumChain : UNSUPPORTED_METHOD ,
243
- eth_selectAccounts : UNSUPPORTED_METHOD
244
- } )
245
- } ) ,
248
+ ! ! provider && ! ! provider [ ProviderIdentityFlag . BlockWallet ] ,
249
+ getIcon : async ( ) => ( await import ( './icons/blockwallet.js' ) ) . default ,
250
+ getInterface : getInjectedInterface ( ProviderIdentityFlag . BlockWallet ) ,
246
251
platforms : [ 'desktop' ]
247
252
}
248
253
@@ -487,7 +492,7 @@ const wallets = [
487
492
alphawallet ,
488
493
atoken ,
489
494
bitpie ,
490
- blankwallet ,
495
+ blockwallet ,
491
496
brave ,
492
497
dcent ,
493
498
frame ,
0 commit comments