diff --git a/src/hooks/useFetchEvent.tsx b/src/hooks/useFetchEvent.tsx index fba39a67..5973ac35 100644 --- a/src/hooks/useFetchEvent.tsx +++ b/src/hooks/useFetchEvent.tsx @@ -2,7 +2,7 @@ import client from '@/services/client.service' import { Event } from 'nostr-tools' import { useEffect, useState } from 'react' -export function useFetchEvent(id?: string) { +export function useFetchEvent(eventId?: string) { const [isFetching, setIsFetching] = useState(true) const [error, setError] = useState(null) const [event, setEvent] = useState(undefined) @@ -10,14 +10,14 @@ export function useFetchEvent(id?: string) { useEffect(() => { const fetchEvent = async () => { setIsFetching(true) - if (!id) { + if (!eventId) { setIsFetching(false) setError(new Error('No id provided')) return } try { - const event = await client.fetchEvent(id) + const event = await client.fetchEvent(eventId) if (event) { setEvent(event) } @@ -32,7 +32,7 @@ export function useFetchEvent(id?: string) { setError(err as Error) setIsFetching(false) }) - }, [id]) + }, [eventId]) return { isFetching, error, event } } diff --git a/src/lib/event.ts b/src/lib/event.ts index dfa4989e..dd9d3ece 100644 --- a/src/lib/event.ts +++ b/src/lib/event.ts @@ -47,12 +47,28 @@ export function isProtectedEvent(event: Event) { export function getParentEventId(event?: Event) { if (!event || !isReplyNoteEvent(event)) return undefined - return event.tags.find(isReplyETag)?.[1] ?? event.tags.find(tagNameEquals('e'))?.[1] + const tag = event.tags.find(isReplyETag) ?? event.tags.find(tagNameEquals('e')) + if (!tag) return undefined + + try { + const [, id, relay, , author] = tag + return nip19.neventEncode({ id, relays: relay ? [relay] : undefined, author }) + } catch { + return undefined + } } export function getRootEventId(event?: Event) { if (!event || !isReplyNoteEvent(event)) return undefined - return event.tags.find(isRootETag)?.[1] + const tag = event.tags.find(isRootETag) + if (!tag) return undefined + + try { + const [, id, relay, , author] = tag + return nip19.neventEncode({ id, relays: relay ? [relay] : undefined, author }) + } catch { + return undefined + } } export function isReplaceable(kind: number) {