React 에서 편리하게 사용할 수 있도록 <WalletProvider>
와 useWallet()
을 제공하지만,
<WalletProvider>
를 사용해서 만들 수 없는 성격의 dApp 인 경우좀 더 낮은 단계의 class WalletController
를 사용할 수 있습니다.
모든 API는 RxJs
를 기반으로 작성되어 있습니다.
const controller = new WalletControllert({
defaultNetwork, // NetworkInfo
walletConnectChainIds, // Record<number, NetworkInfo>
createReadonlyWalletSession, // () => Promise<ReadonlyWalletSession | null>
connectorOpts, // IWalletConnectOptions | undefined
pushServerOpts, // IPushServerOptions | undefined
})
let connectTypes, status, network, wallets;
const subscription1 = controller.availableConnectTypes().subscribe({
next: (nextConnectTypes) => {
connectTypes = nextConnectType
// TODO Do something...
}
})
const subscription2 = controller.status().subscribe({
next: (nextStatus) => {
status = nextStatus
// TODO Do something...
}
})
const subscription3 = controller.network().subscribe({
next: (nextNetwork) => {
network = nextNetwork
// TODO Do something...
}
})
const subscription4 = controller.wallets().subscribe({
next: (nextWallets) => {
wallets = nextWallets
// TODO Do something...
}
})
controller.recheckStatus()
controller.connect(ConnectType.CHROME_EXTENSION)
controller.connect(ConnectType.WALLETCONNECT)
controller.connect(ConnectType.READONLY)
controller.install(ConnectType.CHROME_EXTENSION)
controller.disconnect()
function destroyObservables() {
subscription1.unsubscribe()
subscription2.unsubscribe()
subscription3.unsubscribe()
subscription4.unsubscribe()
}
controller.post({
...YOUR_TX // CreateTxOptions of terra.js
})