UNPKG

@macalinao/grill

Version:

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

43 lines (37 loc) 1.12 kB
import type { Metadata } from "@macalinao/clients-token-metadata"; import { findMetadataPda, getMetadataDecoder, } from "@macalinao/clients-token-metadata"; import type { Account, Address } from "@solana/kit"; import type { UseQueryResult } from "@tanstack/react-query"; import { createPdaHook } from "./create-pda-hook.js"; import { useAccount } from "./use-account.js"; const TOKEN_METADATA_PROGRAM_ID = "metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s" as Address; const useMetadataPda = createPdaHook(async ({ mint }: { mint: Address }) => { const pda = await findMetadataPda({ programId: TOKEN_METADATA_PROGRAM_ID, mint, }); return pda; }, "tokenMetadataPda"); export function useTokenMetadataAccount({ mint, }: { mint: Address | null | undefined; }): UseQueryResult<Account<Metadata> | null> & { pda: Address | null | undefined; address: Address | null | undefined; } { const pda = useMetadataPda(mint ? { mint } : null); const accountResult = useAccount({ address: pda, decoder: getMetadataDecoder(), }); return { ...accountResult, pda, address: pda, }; }