UNPKG

@macalinao/grill

Version:

Modern Solana development kit for React applications with automatic account batching, caching, and transaction notifications

44 lines 1.52 kB
import { useQueries } from "@tanstack/react-query"; import { createPdaQuery } from "./pda-query-utils.js"; /** * Creates a hook for computing multiple PDAs (Program Derived Addresses) with caching * * @param pdaFn - A function that computes a PDA from some arguments * @param queryKeyPrefix - A unique prefix for the react-query cache key * @returns A hook that computes and caches multiple PDAs * * @example * ```typescript * import { findAssociatedTokenPda } from "@solana-program/token"; * * const useAssociatedTokenPdas = createPdasHook( * findAssociatedTokenPda, * "associatedTokenPdas" * ); * * // In a component: * const pdas = useAssociatedTokenPdas([ * { mint: mintAddress1, owner: ownerAddress1, tokenProgram: TOKEN_PROGRAM_ADDRESS }, * { mint: mintAddress2, owner: ownerAddress2, tokenProgram: TOKEN_PROGRAM_ADDRESS }, * ]); * ``` */ export function createPdasHook(pdaFn, queryKeyPrefix) { return function usePdas(args) { const result = useQueries({ queries: (args ?? []).map((arg) => createPdaQuery(pdaFn, queryKeyPrefix, arg)), combine: (results) => { if (!args) { return args; } const keys = results.map((result) => result.data); if (keys.some((key) => key === undefined)) { return null; } return keys; }, }); return result; }; } //# sourceMappingURL=create-pdas-hook.js.map