import { NDKEvent, NDKKind, NostrEvent } from '@nostr-dev-kit/ndk'; import { useQuery } from '@tanstack/react-query'; import { memo } from 'react'; import { useArk } from '@libs/ark'; import { MemoizedArticleKind, MemoizedFileKind, MemoizedTextKind, NoteActions, NoteSkeleton, } from '@shared/notes'; import { User } from '@shared/user'; export function Repost({ event }: { event: NDKEvent }) { const { ark } = useArk(); const { isLoading, isError, data: repostEvent, } = useQuery({ queryKey: ['repost', event.id], queryFn: async () => { try { if (event.content.length > 50) { const embed = JSON.parse(event.content) as NostrEvent; return ark.createNDKEvent({ event: embed }); } const id = event.tags.find((el) => el[0] === 'e')[1]; return await ark.getEventById({ id }); } catch { throw new Error('Failed to get repost event'); } }, refetchOnWindowFocus: false, }); const renderContentByKind = () => { if (!repostEvent) return null; switch (repostEvent.kind) { case NDKKind.Text: return ; case 1063: return ; case NDKKind.Article: return ; default: return null; } }; if (isLoading) { return (
); } if (isError) { return (

Failed to load event

); } return (
{renderContentByKind()}
); } export const MemoizedRepost = memo(Repost);