Files
lume/src/utils/hooks/useProfile.ts
2023-11-14 15:15:13 +07:00

34 lines
881 B
TypeScript

import { NDKUserProfile } from '@nostr-dev-kit/ndk';
import { useQuery } from '@tanstack/react-query';
import { useNDK } from '@libs/ndk/provider';
export function useProfile(pubkey: string, embed?: string) {
const { ndk } = useNDK();
const {
status,
data: user,
error,
} = useQuery({
queryKey: ['user', pubkey],
queryFn: async () => {
if (embed) {
const profile: NDKUserProfile = JSON.parse(embed);
return profile;
}
const cleanPubkey = pubkey.replace(/[^a-zA-Z0-9]/g, '');
const user = ndk.getUser({ pubkey: cleanPubkey });
if (!user) return Promise.reject(new Error("user's profile not found"));
return await user.fetchProfile();
},
staleTime: Infinity,
refetchOnMount: false,
refetchOnWindowFocus: false,
refetchOnReconnect: false,
});
return { status, user, error };
}