* 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>
70 lines
2.9 KiB
TypeScript
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
|
|
}
|