UNPKG

@snowflake-so/safe-saber-walletkit

Version:

Snowflake Safe forked version of @saberhq/use-solana package. Used for integration purpose.

74 lines 2.69 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useSendConnection = exports.useConnection = exports.useConnectionContext = exports.useConnectedSafeWallet = exports.useConnectedWallet = exports.useWallet = void 0; const web3_js_1 = require("@solana/web3.js"); const react_1 = require("react"); const context_1 = require("./context"); const safe_apps_provider_1 = require("@snowflake-so/safe-apps-provider"); /** * Gets the current Solana wallet. */ function useWallet() { const context = (0, context_1.useSolana)(); if (!context) { throw new Error('wallet not loaded'); } return context; } exports.useWallet = useWallet; /** * Gets the current Solana wallet, returning null if it is not connected. */ const useConnectedWallet = () => { const { wallet, connected, walletActivating } = useWallet(); if (!(wallet === null || wallet === void 0 ? void 0 : wallet.connected) || !connected || !wallet.publicKey || walletActivating) { return null; } return wallet; }; exports.useConnectedWallet = useConnectedWallet; const useConnectedSafeWallet = () => { const wallet = (0, exports.useConnectedWallet)(); const { safe } = (0, safe_apps_provider_1.useSafe)(); const [returnWallet, setReturnWallet] = (0, react_1.useState)(); (0, react_1.useEffect)(() => { var _a; if (safe.connected && safe.safeInfo.vaultAddress && safe.safeInfo.walletPublicKey) { setReturnWallet(Object.assign(Object.assign({}, wallet), { publicKey: new web3_js_1.PublicKey(safe.safeInfo.vaultAddress), autoApprove: (_a = wallet === null || wallet === void 0 ? void 0 : wallet.autoApprove) !== null && _a !== void 0 ? _a : false, connected: true, isSafeApp: true, walletPublicKey: new web3_js_1.PublicKey(safe.safeInfo.walletPublicKey) })); } else if (wallet !== null) { setReturnWallet(wallet); } }, [wallet, safe]); return returnWallet; }; exports.useConnectedSafeWallet = useConnectedSafeWallet; /** * Loads the connection context * @returns */ function useConnectionContext() { const context = (0, context_1.useSolana)(); if (!context) { throw new Error('Not in context'); } return context; } exports.useConnectionContext = useConnectionContext; /** * Gets the read connection * @returns */ function useConnection() { return useConnectionContext().connection; } exports.useConnection = useConnection; /** * Gets the send connection * @returns */ function useSendConnection() { return useConnectionContext().sendConnection; } exports.useSendConnection = useSendConnection; //# sourceMappingURL=hooks.js.map