UNPKG

@snowflake-so/safe-saber-walletkit

Version:

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

129 lines 5.71 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __rest = (this && this.__rest) || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.useSnowflakeSolana = exports.useSolana = exports.SolanaProvider = void 0; const react_1 = __importStar(require("react")); const unstated_next_1 = require("unstated-next"); const error_1 = require("./error"); const providers_1 = require("./providers"); const provider_1 = require("./utils/provider"); const storage_1 = require("./storage"); const useConnectionInternal_1 = require("./utils/useConnectionInternal"); const useProviderInternal_1 = require("./utils/useProviderInternal"); const useWalletInternal_1 = require("./utils/useWalletInternal"); const solana_contrib_1 = require("@saberhq/solana-contrib"); const hooks_1 = require("./hooks"); const defaultOnConnect = (wallet, provider) => { console.log(`Connected to ${provider.name} wallet: ${wallet.publicKey.toString()}`); }; const defaultOnDisconnect = (_wallet, provider) => { console.log(`Disconnected from ${provider.name} wallet`); }; const defaultOnError = (err) => { if (err.level === error_1.ErrorLevel.WARN) { console.warn(err); } else { console.error(err); } }; /** * Provides Solana. * @returns */ const useSolanaInternal = (_a = {}) => { var { onConnect = defaultOnConnect, onDisconnect = defaultOnDisconnect, onError = defaultOnError, storageAdapter = storage_1.LOCAL_STORAGE_ADAPTER, walletProviders = providers_1.DEFAULT_WALLET_PROVIDERS, // useProvider args broadcastConnections, confirmOptions } = _a, connectionArgs = __rest(_a, ["onConnect", "onDisconnect", "onError", "storageAdapter", "walletProviders", "broadcastConnections", "confirmOptions"]); const connectionCtx = (0, useConnectionInternal_1.useConnectionInternal)(Object.assign(Object.assign({}, connectionArgs), { storageAdapter })); const { network, endpoint } = connectionCtx; const walletCtx = (0, useWalletInternal_1.useWalletInternal)({ onConnect, onDisconnect, network, endpoint, onError, storageAdapter, walletProviders, }); const providerCtx = (0, useProviderInternal_1.useProviderInternal)({ connection: connectionCtx.connection, wallet: walletCtx.wallet, sendConnection: connectionCtx.sendConnection, commitment: connectionArgs.commitment, broadcastConnections, confirmOptions, }); return Object.assign(Object.assign(Object.assign({}, walletCtx), connectionCtx), providerCtx); }; const Solana = (0, unstated_next_1.createContainer)(useSolanaInternal); const OverrideSolana = Solana; /** * Provides a Solana SDK. * * Note: ensure that `onConnect` and `onDisconnect` are wrapped in useCallback or are * statically defined, otherwise the wallet will keep re-rendering. * @returns */ const SolanaProvider = (_a) => { var { children } = _a, args = __rest(_a, ["children"]); return (react_1.default.createElement(OverrideSolana.Provider, { initialState: args }, children)); }; exports.SolanaProvider = SolanaProvider; /** * Fetches the loaded Solana SDK. */ const useSolana = () => (0, unstated_next_1.useContainer)(Solana); exports.useSolana = useSolana; const useSnowflakeSolana = () => { const walletSolana = (0, exports.useSolana)(); const connectedWallet = (0, hooks_1.useConnectedSafeWallet)(); const [snowflakeSolana, setSnowflakeSolana] = (0, react_1.useState)(walletSolana); (0, react_1.useEffect)(() => { if (connectedWallet === null || connectedWallet === void 0 ? void 0 : connectedWallet.isSafeApp) { setSnowflakeSolana(Object.assign(Object.assign({}, walletSolana), { wallet: connectedWallet, connected: true, publicKey: connectedWallet.publicKey, providerMut: new solana_contrib_1.SolanaAugmentedProvider(provider_1.WalletAdapterProvider.init({ connection: walletSolana.connection, wallet: connectedWallet, })) })); } else { setSnowflakeSolana(walletSolana); } }, [walletSolana, connectedWallet]); return snowflakeSolana; }; exports.useSnowflakeSolana = useSnowflakeSolana; //# sourceMappingURL=context.js.map