useProfilePic

Users can set a profile picture using the pic record of their primary domain name. This record holds the URI to their profile picture.

import { useEffect, useRef, useState } from "react"; import { useConnection } from "@solana/wallet-adapter-react"; import { PublicKey } from "@solana/web3.js"; import { getDomainKey, NameRegistryState } from "@bonfida/spl-name-service"; export const useProfilePic = (user: PublicKey) => { const { connection } = useConnection(); const primary = usePrimaryDomain(user); const [result, setResult] = useState<Result>(undefined); const mounted = useRef(true); useEffect(() => { const fn = async () => { if (!primary) { return setResult(undefined); } const registry = await getPicRecord(connection, primary.toBase58()); if (!registry.data) { return setResult(undefined); } if (mounted.current) { setResult(registry.data.toString("utf-8")); } return () => (mounted.current = false); }; fn().catch(console.error); }, [user.toBase58(), primary]); return result; };