wallet-connect-web-examples/wallets/react-wallet-v2/src/hooks/useInitialization.ts
Gancho Radkov 65162f2d57
refactor: updated sign to web3wallet (#294)
* chore: removes web3wallet example

* refactor: updates sign-client to web3wallet

* feat: implements auth

* fix: resolves bug preventing approving only optional namespaces

* chore: removes redundant commented code

---------

Co-authored-by: Gancho Radkov <ganchoradkov@gmail.com>
2023-09-26 11:48:04 +03:00

70 lines
2.9 KiB
TypeScript

import SettingsStore from '@/store/SettingsStore'
import { createOrRestoreCosmosWallet } from '@/utils/CosmosWalletUtil'
import { createOrRestoreEIP155Wallet } from '@/utils/EIP155WalletUtil'
import { createOrRestoreSolanaWallet } from '@/utils/SolanaWalletUtil'
import { createOrRestorePolkadotWallet } from '@/utils/PolkadotWalletUtil'
import { createOrRestoreNearWallet } from '@/utils/NearWalletUtil'
import { createOrRestoreMultiversxWallet } from '@/utils/MultiversxWalletUtil'
import { createOrRestoreTronWallet } from '@/utils/TronWalletUtil'
import { createOrRestoreTezosWallet } from '@/utils/TezosWalletUtil'
import { createWeb3Wallet, web3wallet } from '@/utils/WalletConnectUtil'
import { createOrRestoreKadenaWallet } from '@/utils/KadenaWalletUtil'
import { useCallback, useEffect, useRef, useState } from 'react'
import { useSnapshot } from 'valtio'
export default function useInitialization() {
const [initialized, setInitialized] = useState(false)
const prevRelayerURLValue = useRef<string>('')
const { relayerRegionURL } = useSnapshot(SettingsStore.state)
const onInitialize = useCallback(async () => {
try {
const { eip155Addresses } = createOrRestoreEIP155Wallet()
const { cosmosAddresses } = await createOrRestoreCosmosWallet()
const { solanaAddresses } = await createOrRestoreSolanaWallet()
const { polkadotAddresses } = await createOrRestorePolkadotWallet()
const { nearAddresses } = await createOrRestoreNearWallet()
const { multiversxAddresses } = await createOrRestoreMultiversxWallet()
const { tronAddresses } = await createOrRestoreTronWallet()
const { tezosAddresses } = await createOrRestoreTezosWallet()
const { kadenaAddresses } = await createOrRestoreKadenaWallet()
SettingsStore.setEIP155Address(eip155Addresses[0])
SettingsStore.setCosmosAddress(cosmosAddresses[0])
SettingsStore.setSolanaAddress(solanaAddresses[0])
SettingsStore.setPolkadotAddress(polkadotAddresses[0])
SettingsStore.setNearAddress(nearAddresses[0])
SettingsStore.setMultiversxAddress(multiversxAddresses[0])
SettingsStore.setTronAddress(tronAddresses[0])
SettingsStore.setTezosAddress(tezosAddresses[0])
SettingsStore.setKadenaAddress(kadenaAddresses[0])
await createWeb3Wallet(relayerRegionURL)
setInitialized(true)
} catch (err: unknown) {
alert(err)
}
}, [relayerRegionURL])
// restart transport if relayer region changes
const onRelayerRegionChange = useCallback(() => {
try {
web3wallet.core.relayer.restartTransport(relayerRegionURL)
prevRelayerURLValue.current = relayerRegionURL
} catch (err: unknown) {
alert(err)
}
}, [relayerRegionURL])
useEffect(() => {
if (!initialized) {
onInitialize()
}
if (prevRelayerURLValue.current !== relayerRegionURL) {
onRelayerRegionChange()
}
}, [initialized, onInitialize, relayerRegionURL, onRelayerRegionChange])
return initialized
}