@web3auth/modal
Version:
Multi chain wallet aggregator for web3Auth
53 lines (49 loc) • 1.82 kB
JavaScript
;
var web3_js = require('@solana/web3.js');
var noModal = require('@web3auth/no-modal');
var vue = require('vue');
require('@web3auth/no-modal/vue');
var useWeb3Auth = require('../../composables/useWeb3Auth.js');
const useSolanaWallet = () => {
const {
provider,
web3Auth
} = useWeb3Auth.useWeb3Auth();
const accounts = vue.ref([]);
const solanaWallet = vue.shallowRef(null);
const connection = vue.shallowRef(null);
const setupWallet = async () => {
var _web3Auth$value, _web3Auth$value2;
if (!((_web3Auth$value = web3Auth.value) !== null && _web3Auth$value !== void 0 && (_web3Auth$value = _web3Auth$value.currentChain) !== null && _web3Auth$value !== void 0 && _web3Auth$value.chainNamespace) || web3Auth.value.currentChain.chainNamespace !== noModal.CHAIN_NAMESPACES.SOLANA) {
return;
}
solanaWallet.value = new noModal.SolanaWallet(provider.value);
const result = await solanaWallet.value.getAccounts();
if ((result === null || result === void 0 ? void 0 : result.length) > 0) {
accounts.value = result;
}
connection.value = new web3_js.Connection((_web3Auth$value2 = web3Auth.value) === null || _web3Auth$value2 === void 0 || (_web3Auth$value2 = _web3Auth$value2.currentChain) === null || _web3Auth$value2 === void 0 ? void 0 : _web3Auth$value2.rpcTarget);
};
if (provider.value && !solanaWallet.value) {
setupWallet();
}
vue.watch(provider, async newVal => {
if (!newVal && solanaWallet.value) {
solanaWallet.value = null;
accounts.value = null;
connection.value = null;
return;
}
if (newVal && !solanaWallet.value) {
setupWallet();
}
}, {
immediate: true
});
return {
solanaWallet,
accounts,
connection
};
};
exports.useSolanaWallet = useSolanaWallet;