@@ -3,24 +3,62 @@ import { WalletModule, Helpers, CommonWalletOptions } from '../../../interfaces'
3
3
4
4
import trustIcon from '../wallet-icons/icon-trust'
5
5
6
- function trust ( options : CommonWalletOptions ) : WalletModule {
7
- const { preferred, label, iconSrc, svg } = options
6
+ function trust (
7
+ options : CommonWalletOptions & { rpcUrl : string }
8
+ ) : WalletModule {
9
+ const { preferred, label, iconSrc, svg, rpcUrl } = options
8
10
9
11
return {
10
12
name : label || 'Trust' ,
11
13
svg : svg || trustIcon ,
12
14
iconSrc,
13
15
wallet : async ( helpers : Helpers ) => {
14
- const { getProviderName, createLegacyProviderInterface } = helpers
15
- const provider =
16
+ const { getProviderName, getAddress , getNetwork , getBalance } = helpers
17
+ const trustProvider =
16
18
( window as any ) . web3 && ( window as any ) . web3 . currentProvider
17
19
20
+ const isTrust = getProviderName ( trustProvider ) === 'Trust'
21
+ let createProvider
22
+
23
+ if ( isTrust && rpcUrl ) {
24
+ createProvider = ( await import ( './providerEngine' ) ) . default
25
+ }
26
+
27
+ const provider = createProvider ? createProvider ( { rpcUrl } ) : null
28
+
29
+ let warned = false
30
+
18
31
return {
19
- provider,
20
- interface :
21
- provider && getProviderName ( provider ) === 'Trust'
22
- ? createLegacyProviderInterface ( provider )
23
- : null
32
+ provider : trustProvider ,
33
+ interface : isTrust
34
+ ? {
35
+ address : {
36
+ get : ( ) => getAddress ( trustProvider )
37
+ } ,
38
+ network : {
39
+ get : ( ) => getNetwork ( trustProvider )
40
+ } ,
41
+ balance : {
42
+ get : async ( ) => {
43
+ if ( ! provider ) {
44
+ if ( ! warned ) {
45
+ console . warn (
46
+ 'The Trust provider does not allow rpc calls preventing Onboard.js from getting the balance. You can pass in a "rpcUrl" to the Trust wallet initialization object to get the balance.'
47
+ )
48
+ warned = true
49
+ }
50
+
51
+ return null
52
+ }
53
+
54
+ const address = await getAddress ( trustProvider )
55
+
56
+ return getBalance ( provider , address )
57
+ }
58
+ } ,
59
+ name : getProviderName ( trustProvider )
60
+ }
61
+ : null
24
62
}
25
63
} ,
26
64
type : 'injected' ,
0 commit comments