UNPKG

@saberhq/sail

Version:

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

28 lines (25 loc) 675 B
import type { PublicKey } from "@solana/web3.js"; import { useEffect } from "react"; import { useSail } from "../provider"; /** * Mark that you desire to subscribe to changes on an account. * * This is for advanced users only. */ export const useAccountsSubscribe = ( keys: readonly (PublicKey | null | undefined)[] | null | undefined ) => { const { subscribe } = useSail(); // subscribe to account changes useEffect(() => { if (!keys) { return; } const allKeysUnsubscribe = keys .filter((k): k is PublicKey => !!k) .map(subscribe); return () => { allKeysUnsubscribe.map((fn) => fn()); }; }, [keys, subscribe]); };