@snowflake-so/safe-saber-walletkit
Version:
Snowflake Safe forked version of @saberhq/use-solana package. Used for integration purpose.
74 lines • 2.69 kB
JavaScript
;
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