Migration Guide
This guide will cover how to migrate your existing codebase to use Wallet Kit instead of the now deprecated Wallet Provider.
Prerequisites
- The latest version of the Station Chrome extension (Station Wallet 7.4.2 and above)
- NPM
- NVM
- Node.js version 16
💡Node version 16
Most users will need to specify Node version 16 before continuing. You can manage node versions with NVM.
_1nvm install 16 nvm use 16
1. Set up dependencies
- To get started, uninstall the deprecated Station wallet packages.
_1npm uninstall @terra-money/use-wallet @terra-money/wallet-controller @terra-money/wallet-provider
- Install the
@terra-money/wallet-kit
package.
_1npm install @terra-money/wallet-kit @terra-money/terra-station-mobile
2. Change the WalletProvider
setup
Navigate to index.js
in a code editor and change the following in the WalletProvider
component.
Instead of calling getChainOptions
, use getInitalConfig
and pass in the defaultNetworks
as a prop. It is recommended to also add Station Mobile, as shown in the code sample below.
_16import ReactDOM from 'react-dom';_16import App from './App';_16import TerraStationMobileWallet from '@terra-money/terra-station-mobile';_16import { getInitialConfig, WalletProvider } from '@terra-money/wallet-kit';_16_16getInitialConfig().then((defaultNetworks) => {_16 ReactDOM.render(_16 <WalletProvider_16 extraWallets={[new TerraStationMobileWallet()]}_16 defaultNetworks={defaultNetworks}_16 >_16 <App />_16 </WalletProvider>,_16 document.getElementById('root'),_16 );_16});
3. Comply with the Wallet Kit API
- Fix the package imports. Import the Station Wallet utility from
@terra-money/wallet-kit
instead of prior packages.
_1import { useWallet, useConnectedWallet } from '@terra-money/wallet-kit';
- Fix minor code changes. The
WalletStatus
enum now has theCONNECTED
property instead ofWALLET_CONNECTED
.availableConnections
andavailableInstallations
have been consolidated intoavailableWallets
.
📖API
You can refer to the WalletKit README for more information on the WalletKit API.
_18const { connect, availableWallets } = useWallet();_18_18const list = [_18 ...availableWallets_18 .filter(({ isInstalled }) => isInstalled)_18 .map(({ id, name, icon }) => ({_18 src: icon,_18 children: name,_18 onClick: () => connect(id),_18 })),_18 ...availableWallets_18 .filter(({ isInstalled, website }) => !isInstalled && website)_18 .map(({ name, icon, website }) => ({_18 src: icon,_18 children: t(`Install ${name}`),_18 href: website ?? '',_18 })),_18];
📱Station mobile app
To add support for Station mobile, follow the mobile section in the Get Started guide.
Congratulations, your migration to Wallet Kit is now complete!