Skip to content

Commit ccade73

Browse files
authored
Merge pull request #286 from blocknative/enhancement/trust-balance
Enhancement: Trust Balance. Closes #285
2 parents 417458f + 89af466 commit ccade73

File tree

1 file changed

+47
-9
lines changed

1 file changed

+47
-9
lines changed

src/modules/select/wallets/trust.ts

Lines changed: 47 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,62 @@ 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 = createProvider ? createProvider({ rpcUrl }) : null
28+
29+
let warned = false
30+
1831
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
2462
}
2563
},
2664
type: 'injected',

0 commit comments

Comments
 (0)