@@ -3,23 +3,64 @@ 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 = rpcUrl
28
+ ? createProvider && createProvider ( { rpcUrl } )
29
+ : null
30
+
31
+ let warned = false
32
+
18
33
return {
19
- provider,
34
+ provider : trustProvider ,
20
35
interface :
21
- provider && getProviderName ( provider ) === 'Trust'
22
- ? createLegacyProviderInterface ( provider )
36
+ trustProvider && isTrust
37
+ ? {
38
+ address : {
39
+ get : ( ) => getAddress ( trustProvider )
40
+ } ,
41
+ network : {
42
+ get : ( ) => getNetwork ( trustProvider )
43
+ } ,
44
+ balance : {
45
+ get : async ( ) => {
46
+ if ( ! provider ) {
47
+ if ( ! warned ) {
48
+ console . warn (
49
+ 'The Trust provider does not allow rpc calls preventing Onboard.js from getting the balance. You can pass in a "rpcUrl" to the imToken wallet initialization object to get the balance.'
50
+ )
51
+ warned = true
52
+ }
53
+
54
+ return null
55
+ }
56
+
57
+ const address = await getAddress ( trustProvider )
58
+
59
+ return getBalance ( provider , address )
60
+ }
61
+ } ,
62
+ name : getProviderName ( trustProvider )
63
+ }
23
64
: null
24
65
}
25
66
} ,
0 commit comments