@web3auth/no-modal
Version:
Multi chain wallet aggregator for web3Auth
82 lines (78 loc) • 2.7 kB
JavaScript
;
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;