UNPKG

@saberhq/sail

Version:

Account caching and batched loading for React-based Solana applications.

57 lines 2.45 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useNativeAccount = exports.useSOLBalance = void 0; const solana_contrib_1 = require("@saberhq/solana-contrib"); const token_utils_1 = require("@saberhq/token-utils"); const use_solana_1 = require("@saberhq/use-solana"); const react_1 = require("react"); const useParsedAccountsData_1 = require("./parsers/useParsedAccountsData"); /** * Fetches the SOL balance of an account. * @returns */ const useSOLBalance = (accountId) => { const { network } = (0, use_solana_1.useSolana)(); const sol = token_utils_1.RAW_SOL[network]; const parser = (0, react_1.useCallback)((data) => { return new token_utils_1.TokenAmount(sol, data.accountInfo.lamports); }, [sol]); const { data } = (0, useParsedAccountsData_1.useParsedAccountData)(accountId, parser); return (0, react_1.useMemo)(() => (0, solana_contrib_1.mapN)((data) => new token_utils_1.TokenAmount(sol, data.accountInfo.lamports), data), [data, sol]); }; exports.useSOLBalance = useSOLBalance; /** * Uses the data of the raw SOL account. * @deprecated use {@link useSOLBalance} instead * @returns */ function useNativeAccount() { const wallet = (0, use_solana_1.useConnectedWallet)(); const { network } = (0, use_solana_1.useConnectionContext)(); const sol = token_utils_1.RAW_SOL[network]; const parser = (0, react_1.useCallback)((data) => { return new token_utils_1.TokenAmount(sol, data.accountInfo.lamports); }, [sol]); const { data } = (0, useParsedAccountsData_1.useParsedAccountData)(wallet === null || wallet === void 0 ? void 0 : wallet.publicKey, parser); const balance = data === null || data === void 0 ? void 0 : data.accountInfo.lamports; return (0, react_1.useMemo)(() => { if (data === null) { return { account: null, nativeBalance: new token_utils_1.TokenAmount(sol, 0), }; } if (!data || wallet === null || balance === undefined) { return { account: data === null || data === void 0 ? void 0 : data.accountInfo, nativeBalance: undefined, }; } return { account: data.accountInfo, nativeBalance: data.accountInfo.data, }; }, [balance, data, sol, wallet]); } exports.useNativeAccount = useNativeAccount; //# sourceMappingURL=native.js.map