Skip to content

Commit 8dd63ad

Browse files
committed
Add custom provider for trust balance calls
1 parent 51f5e3a commit 8dd63ad

File tree

1 file changed

+48
-7
lines changed

1 file changed

+48
-7
lines changed

src/modules/select/wallets/trust.ts

Lines changed: 48 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,64 @@ import { WalletModule, Helpers, CommonWalletOptions } from '../../../interfaces'
33

44
import trustIcon from '../wallet-icons/icon-trust'
55

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
810

911
return {
1012
name: label || 'Trust',
1113
svg: svg || trustIcon,
1214
iconSrc,
1315
wallet: async (helpers: Helpers) => {
14-
const { getProviderName, createLegacyProviderInterface } = helpers
15-
const provider =
16+
const { getProviderName, getAddress, getNetwork, getBalance } = helpers
17+
const trustProvider =
1618
(window as any).web3 && (window as any).web3.currentProvider
1719

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+
1833
return {
19-
provider,
34+
provider: trustProvider,
2035
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+
}
2364
: null
2465
}
2566
},

0 commit comments

Comments
 (0)