From 3a3cf6d256b8b3bd9fb8461472538aed1a7676cd Mon Sep 17 00:00:00 2001 From: codytseng Date: Fri, 8 Nov 2024 14:24:13 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20some=20=F0=9F=90=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/renderer/src/PageManager.tsx | 7 +++++-- src/renderer/src/components/NoteCard/RepostNoteCard.tsx | 4 ++-- src/renderer/src/components/NoteList/index.tsx | 4 +++- src/renderer/src/components/ReplyNoteList/index.tsx | 9 ++++++--- src/renderer/src/lib/event.ts | 2 +- src/renderer/src/pages/secondary/NotePage/index.tsx | 2 +- 6 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/renderer/src/PageManager.tsx b/src/renderer/src/PageManager.tsx index 70b606d1..18177213 100644 --- a/src/renderer/src/PageManager.tsx +++ b/src/renderer/src/PageManager.tsx @@ -27,6 +27,7 @@ type TSecondaryPageContext = { } type TStackItem = { + index: number pageName: string props: any component: React.ReactNode @@ -89,8 +90,10 @@ export function PageManager({ if (!isValidElement(element)) return setSecondaryStack((prevStack) => { + const currentStack = prevStack[prevStack.length - 1] + const index = currentStack ? currentStack.index + 1 : 0 const component = cloneElement(element, props) - const newStack = [...prevStack, { pageName, props, component }] + const newStack = [...prevStack, { index, pageName, props, component }] if (newStack.length > maxStackSize) newStack.shift() return newStack }) @@ -112,7 +115,7 @@ export function PageManager({ {secondaryStack.length ? ( secondaryStack.map((item, index) => (
diff --git a/src/renderer/src/components/NoteCard/RepostNoteCard.tsx b/src/renderer/src/components/NoteCard/RepostNoteCard.tsx index 936074e5..f352f41c 100644 --- a/src/renderer/src/components/NoteCard/RepostNoteCard.tsx +++ b/src/renderer/src/components/NoteCard/RepostNoteCard.tsx @@ -10,8 +10,8 @@ export default function RepostNoteCard({ event, className }: { event: Event; cla return (
- - + +
reposted
diff --git a/src/renderer/src/components/NoteList/index.tsx b/src/renderer/src/components/NoteList/index.tsx index ce4c929f..30470eac 100644 --- a/src/renderer/src/components/NoteList/index.tsx +++ b/src/renderer/src/components/NoteList/index.tsx @@ -42,7 +42,9 @@ export default function NoteList({ const sub = client.subscribeEvents(relayUrls, noteFilter, { onEose: (events) => { const processedEvents = events.filter((e) => !isReplyNoteEvent(e)) - setEvents((pre) => [...pre, ...processedEvents]) + if (processedEvents.length > 0) { + setEvents((pre) => [...pre, ...processedEvents]) + } if (events.length > 0) { setUntil(events[events.length - 1].created_at - 1) } diff --git a/src/renderer/src/components/ReplyNoteList/index.tsx b/src/renderer/src/components/ReplyNoteList/index.tsx index 6c635c0c..d8e3d40a 100644 --- a/src/renderer/src/components/ReplyNoteList/index.tsx +++ b/src/renderer/src/components/ReplyNoteList/index.tsx @@ -1,5 +1,5 @@ import { Separator } from '@renderer/components/ui/separator' -import { getParentEventId } from '@renderer/lib/event' +import { getParentEventId, isReplyNoteEvent } from '@renderer/lib/event' import { cn } from '@renderer/lib/utils' import { useNoteStats } from '@renderer/providers/NoteStatsProvider' import client from '@renderer/services/client.service' @@ -28,14 +28,17 @@ export default function ReplyNoteList({ event, className }: { event: Event; clas until }) const sortedEvents = events.sort((a, b) => a.created_at - b.created_at) - if (sortedEvents.length > 0) { + const processedEvents = events.filter((e) => isReplyNoteEvent(e)) + if (processedEvents.length > 0) { const eventMap: Record = {} - const eventsWithParentIds = sortedEvents.map((event) => { + const eventsWithParentIds = processedEvents.map((event) => { eventMap[event.id] = event return [event, getParentEventId(event)] as [Event, string | undefined] }) setEventsWithParentId((pre) => [...eventsWithParentIds, ...pre]) setEventMap((pre) => ({ ...pre, ...eventMap })) + } + if (sortedEvents.length > 0) { setUntil(sortedEvents[0].created_at - 1) } setHasMore(sortedEvents.length >= 100) diff --git a/src/renderer/src/lib/event.ts b/src/renderer/src/lib/event.ts index 4573e886..5c51b4b5 100644 --- a/src/renderer/src/lib/event.ts +++ b/src/renderer/src/lib/event.ts @@ -9,7 +9,7 @@ export function isNsfwEvent(event: Event) { } export function isReplyNoteEvent(event: Event) { - return event.kind === kinds.ShortTextNote && event.tags.some(tagNameEquals('e')) + return event.kind === kinds.ShortTextNote && event.tags.some(rootETag) } export function getParentEventId(event: Event) { diff --git a/src/renderer/src/pages/secondary/NotePage/index.tsx b/src/renderer/src/pages/secondary/NotePage/index.tsx index e5acd962..28ce43b2 100644 --- a/src/renderer/src/pages/secondary/NotePage/index.tsx +++ b/src/renderer/src/pages/secondary/NotePage/index.tsx @@ -1,5 +1,5 @@ -import ReplyNoteList from '@renderer/components/ReplyNoteList' import Note from '@renderer/components/Note' +import ReplyNoteList from '@renderer/components/ReplyNoteList' import { Separator } from '@renderer/components/ui/separator' import SecondaryPageLayout from '@renderer/layouts/SecondaryPageLayout' import { Event } from 'nostr-tools'