fix: some 🐛

This commit is contained in:
codytseng
2024-11-08 14:24:13 +08:00
parent d883220c93
commit 3a3cf6d256
6 changed files with 18 additions and 10 deletions

View File

@@ -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) => (
<div
key={index}
key={item.index}
className="absolute top-0 left-0 w-full h-full bg-background"
style={{ zIndex: index }}
>

View File

@@ -10,8 +10,8 @@ export default function RepostNoteCard({ event, className }: { event: Event; cla
return (
<div className={className}>
<div className="flex gap-1 mb-1 pl-4 text-xs items-center text-muted-foreground">
<Repeat2 size={12} />
<Username userId={event.pubkey} className="font-semibold" />
<Repeat2 size={12} className="shrink-0" />
<Username userId={event.pubkey} className="font-semibold truncate" />
<div>reposted</div>
</div>
<ShortTextNoteCard event={targetEvent} />

View File

@@ -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)
}

View File

@@ -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<string, Event> = {}
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)

View File

@@ -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) {

View File

@@ -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'