UNPKG

@web3auth/no-modal

Version:
82 lines (78 loc) 2.7 kB
'use strict'; var web3_js = require('@solana/web3.js'); var vue = require('vue'); var baseControllers = require('@toruslabs/base-controllers'); var solanaWallet = require('../../../providers/solana-provider/solanaWallet.js'); var useChain = require('../../composables/useChain.js'); require('@babel/runtime/helpers/objectSpread2'); require('@babel/runtime/helpers/defineProperty'); require('@segment/analytics-next'); require('../../../base/loglevel.js'); require('@web3auth/auth'); require('../../../base/errors/index.js'); require('../../../base/wallet/index.js'); require('../../../base/connector/connectorStatus.js'); require('../../../base/connector/constants.js'); require('jwt-decode'); require('../../../base/plugin/errors.js'); require('../../../base/plugin/IPlugin.js'); require('@toruslabs/constants'); require('@toruslabs/http-helpers'); var useWeb3Auth = require('../../composables/useWeb3Auth.js'); const useSolanaWallet = () => { const { provider, web3Auth } = useWeb3Auth.useWeb3Auth(); const { chainNamespace } = useChain.useChain(); const accounts = vue.ref([]); const solanaWallet$1 = vue.shallowRef(null); const connection = vue.shallowRef(null); const isSolana = vue.computed(() => chainNamespace.value === baseControllers.CHAIN_NAMESPACES.SOLANA); const setupWallet = async () => { var _web3Auth$value; if (!isSolana.value) { return; } if (!provider.value) { return; } solanaWallet$1.value = new solanaWallet.SolanaWallet(provider.value); const result = await solanaWallet$1.value.getAccounts(); if ((result === null || result === void 0 ? void 0 : result.length) > 0) { accounts.value = result; } if ((_web3Auth$value = web3Auth.value) !== null && _web3Auth$value !== void 0 && (_web3Auth$value = _web3Auth$value.currentChain) !== null && _web3Auth$value !== void 0 && _web3Auth$value.rpcTarget) { connection.value = new web3_js.Connection(web3Auth.value.currentChain.rpcTarget); } }; const resetWallet = () => { solanaWallet$1.value = null; accounts.value = null; connection.value = null; }; if (provider.value && !solanaWallet$1.value) { setupWallet(); } vue.watch([provider, chainNamespace], async ([newProvider, newChainNamespace]) => { if (!newProvider || newChainNamespace !== baseControllers.CHAIN_NAMESPACES.SOLANA) { if (solanaWallet$1.value) { resetWallet(); } return; } if (newProvider && !solanaWallet$1.value) { setupWallet(); } }, { immediate: true }); return { solanaWallet: solanaWallet$1, accounts, connection }; }; exports.useSolanaWallet = useSolanaWallet;