[core] - Update Wallet Modules Without Re-Initialization
This release includes a new feature allowing for dynamic updating of the wallet modules that are displayed to the user in the wallet select modal, without needing to re-initialize. To enable this, a new actions
object has been added to the state
object, exposing a setWalletModules
function. Example usage below:
import Onboard from '@web3-onboard/core'
import injectedModule from '@web3-onboard/injected-wallets'
import ledgerModule from '@web3-onboard/ledger'
import trezorModule from '@web3-onboard/trezor'
const injected = injectedModule()
const ledger = ledgerModule()
const trezor = trezorModule({
email: '<EMAIL_CONTACT>',
appUrl: '<APP_URL>'
})
// initialize with injected and hardware wallets
const onboard = Onboard({
wallets: [injected, trezor, ledger],
chains: [
{
id: '0x1',
token: 'ETH',
label: 'Ethereum Mainnet',
rpcUrl: `https://mainnet.infura.io/v3/${INFURA_ID}`
}
]
})
// then after a user action, you may decide to only display hardware wallets on the next call to onboard.connectWallet
onboard.state.actions.setWalletModules([ledger, trezor])
Changelog:
- [core-v2.1.0] - Feature: Update Wallets without Re-Initialization (#906)