UNPKG

@saberhq/sail

Version:

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

67 lines 2.03 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.usePubkeysMemo = exports.usePubkeyMemo = exports.usePubkey = void 0; const web3_js_1 = require("@solana/web3.js"); const react_1 = require("react"); const utils_1 = require("../utils"); /** * Parses a Pubkey. * @param raw The string or Pubkey representation of the key. * @returns */ const usePubkey = (raw) => { return (0, react_1.useMemo)(() => { if (raw === undefined) { return raw; } if (!raw) { return null; } if (raw instanceof web3_js_1.PublicKey) { return raw; } try { return new web3_js_1.PublicKey(raw); } catch (e) { return null; } }, [raw]); }; exports.usePubkey = usePubkey; /** * Uses a {@link PublicKey}, ensuring the reference does not change if the key changes. * @param raw The string or Pubkey representation of the key. * @returns */ const usePubkeyMemo = (raw) => { const keyNoMemo = (0, exports.usePubkey)(raw); return (0, react_1.useMemo)(() => { return keyNoMemo; // eslint-disable-next-line react-hooks/exhaustive-deps }, [keyNoMemo === null || keyNoMemo === void 0 ? void 0 : keyNoMemo.toString()]); }; exports.usePubkeyMemo = usePubkeyMemo; /** * Loads and parses multiple {@link PublicKey}s, preserving the reference. */ const usePubkeysMemo = (keys) => { return (0, react_1.useMemo)(() => { return keys.map((k) => { if (typeof k === "string") { try { return new web3_js_1.PublicKey(k); } catch (e) { return null; } } else { return k; } }); // eslint-disable-next-line react-hooks/exhaustive-deps }, [JSON.stringify((0, utils_1.serializeKeys)(keys))]); }; exports.usePubkeysMemo = usePubkeysMemo; //# sourceMappingURL=usePubkey.js.map