diff --git a/src/components/Note/Highlight.tsx b/src/components/Note/Highlight.tsx
index 11b3f7e..eca44c6 100644
--- a/src/components/Note/Highlight.tsx
+++ b/src/components/Note/Highlight.tsx
@@ -1,8 +1,8 @@
import { useFetchEvent, useTranslatedEvent } from '@/hooks'
import { createFakeEvent } from '@/lib/event'
-import { toNjump, toNote } from '@/lib/link'
+import { toNote } from '@/lib/link'
import { isValidPubkey } from '@/lib/pubkey'
-import { generateBech32IdFromATag } from '@/lib/tag'
+import { generateBech32IdFromATag, generateBech32IdFromETag } from '@/lib/tag'
import { cn } from '@/lib/utils'
import { useSecondaryPage } from '@/PageManager'
import { Event } from 'nostr-tools'
@@ -62,7 +62,13 @@ function HighlightSource({ event }: { event: Event }) {
return sourceTag
}, [event])
const { event: referenceEvent } = useFetchEvent(
- sourceTag && sourceTag[0] === 'e' ? sourceTag[1] : undefined
+ sourceTag
+ ? sourceTag[0] === 'e'
+ ? generateBech32IdFromETag(sourceTag)
+ : sourceTag[0] === 'a'
+ ? generateBech32IdFromATag(sourceTag)
+ : undefined
+ : undefined
)
const referenceEventId = useMemo(() => {
if (!sourceTag || sourceTag[0] === 'r') return
@@ -110,29 +116,17 @@ function HighlightSource({ event }: { event: Event }) {
{t('From')}
{pubkey &&
}
- {referenceEvent ? (
+ {referenceEventId && (
{
e.stopPropagation()
- push(toNote(referenceEvent))
+ push(toNote(referenceEvent ?? referenceEventId))
}}
>
-
+ {referenceEvent ? : referenceEventId}
- ) : referenceEventId ? (
-
- ) : null}
+ )}
)
}
diff --git a/src/lib/tag.ts b/src/lib/tag.ts
index 1554ff1..95dbb32 100644
--- a/src/lib/tag.ts
+++ b/src/lib/tag.ts
@@ -18,7 +18,13 @@ export function tagNameEquals(tagName: string) {
export function generateBech32IdFromETag(tag: string[]) {
try {
- const [, id, relay, , author] = tag
+ const [, id, relay, markerOrPubkey, pubkey] = tag
+ let author: string | undefined
+ if (markerOrPubkey && isValidPubkey(markerOrPubkey)) {
+ author = markerOrPubkey
+ } else if (pubkey && isValidPubkey(pubkey)) {
+ author = pubkey
+ }
return nip19.neventEncode({ id, relays: relay ? [relay] : undefined, author })
} catch {
return undefined
diff --git a/src/pages/secondary/NotePage/NotFound.tsx b/src/pages/secondary/NotePage/NotFound.tsx
new file mode 100644
index 0000000..99c3acc
--- /dev/null
+++ b/src/pages/secondary/NotePage/NotFound.tsx
@@ -0,0 +1,13 @@
+import ClientSelect from '@/components/ClientSelect'
+import { useTranslation } from 'react-i18next'
+
+export default function NotFound({ bech32Id }: { bech32Id?: string }) {
+ const { t } = useTranslation()
+
+ return (
+
+
{t('Note not found')}
+
+
+ )
+}
diff --git a/src/pages/secondary/NotePage/index.tsx b/src/pages/secondary/NotePage/index.tsx
index 025c57c..fcc99db 100644
--- a/src/pages/secondary/NotePage/index.tsx
+++ b/src/pages/secondary/NotePage/index.tsx
@@ -18,7 +18,7 @@ import { Ellipsis } from 'lucide-react'
import { Event } from 'nostr-tools'
import { forwardRef, useMemo } from 'react'
import { useTranslation } from 'react-i18next'
-import NotFoundPage from '../NotFoundPage'
+import NotFound from './NotFound'
const NotePage = forwardRef(({ id, index }: { id?: string; index?: number }, ref) => {
const { t } = useTranslation()
@@ -59,7 +59,13 @@ const NotePage = forwardRef(({ id, index }: { id?: string; index?: number }, ref
)
}
- if (!event) return
+ if (!event) {
+ return (
+
+
+
+ )
+ }
return (