fix: some 🐛
This commit is contained in:
@@ -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 }}
|
||||
>
|
||||
|
||||
@@ -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} />
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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'
|
||||
|
||||
Reference in New Issue
Block a user