@web3auth/no-modal
Version:
Multi chain wallet aggregator for web3Auth
72 lines (68 loc) • 2.64 kB
JavaScript
;
var web3_js = require('@solana/web3.js');
var react = require('react');
var baseControllers = require('@toruslabs/base-controllers');
require('@solana/wallet-standard-features');
require('@toruslabs/bs58');
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');
require('../../../providers/base-provider/utils.js');
require('../../../providers/base-provider/CommonJRPCProvider.js');
require('../../../providers/base-provider/commonPrivateKeyProvider.js');
require('@web3auth/ws-embed');
var solanaWallet = require('../../../providers/solana-provider/solanaWallet.js');
var useChain = require('../../hooks/useChain.js');
require('../../context/WalletServicesInnerContext.js');
require('../../context/Web3AuthInnerContext.js');
var useWeb3Auth = require('../../hooks/useWeb3Auth.js');
const useSolanaWallet = () => {
const {
provider,
web3Auth
} = useWeb3Auth.useWeb3Auth();
const {
chainNamespace
} = useChain.useChain();
const [accounts, setAccounts] = react.useState(null);
const solanaWallet$1 = react.useMemo(() => {
if (!provider) return null;
if (chainNamespace !== baseControllers.CHAIN_NAMESPACES.SOLANA) return null;
return new solanaWallet.SolanaWallet(provider);
}, [provider, chainNamespace]);
const connection = react.useMemo(() => {
if (!web3Auth || !provider || chainNamespace !== baseControllers.CHAIN_NAMESPACES.SOLANA) return null;
return new web3_js.Connection(web3Auth.currentChain.rpcTarget);
}, [web3Auth, provider, chainNamespace]);
react.useEffect(() => {
const init = async () => {
if (chainNamespace !== baseControllers.CHAIN_NAMESPACES.SOLANA) {
setAccounts(null);
return;
}
if (!solanaWallet$1) return;
const accounts = await solanaWallet$1.getAccounts();
if ((accounts === null || accounts === void 0 ? void 0 : accounts.length) > 0) {
setAccounts(accounts);
}
};
if (solanaWallet$1) init();
}, [solanaWallet$1, chainNamespace]);
return {
solanaWallet: solanaWallet$1,
accounts,
connection
};
};
exports.useSolanaWallet = useSolanaWallet;