fix: some 🐛
This commit is contained in:
@@ -27,6 +27,7 @@ type TSecondaryPageContext = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type TStackItem = {
|
type TStackItem = {
|
||||||
|
index: number
|
||||||
pageName: string
|
pageName: string
|
||||||
props: any
|
props: any
|
||||||
component: React.ReactNode
|
component: React.ReactNode
|
||||||
@@ -89,8 +90,10 @@ export function PageManager({
|
|||||||
if (!isValidElement(element)) return
|
if (!isValidElement(element)) return
|
||||||
|
|
||||||
setSecondaryStack((prevStack) => {
|
setSecondaryStack((prevStack) => {
|
||||||
|
const currentStack = prevStack[prevStack.length - 1]
|
||||||
|
const index = currentStack ? currentStack.index + 1 : 0
|
||||||
const component = cloneElement(element, props)
|
const component = cloneElement(element, props)
|
||||||
const newStack = [...prevStack, { pageName, props, component }]
|
const newStack = [...prevStack, { index, pageName, props, component }]
|
||||||
if (newStack.length > maxStackSize) newStack.shift()
|
if (newStack.length > maxStackSize) newStack.shift()
|
||||||
return newStack
|
return newStack
|
||||||
})
|
})
|
||||||
@@ -112,7 +115,7 @@ export function PageManager({
|
|||||||
{secondaryStack.length ? (
|
{secondaryStack.length ? (
|
||||||
secondaryStack.map((item, index) => (
|
secondaryStack.map((item, index) => (
|
||||||
<div
|
<div
|
||||||
key={index}
|
key={item.index}
|
||||||
className="absolute top-0 left-0 w-full h-full bg-background"
|
className="absolute top-0 left-0 w-full h-full bg-background"
|
||||||
style={{ zIndex: index }}
|
style={{ zIndex: index }}
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -10,8 +10,8 @@ export default function RepostNoteCard({ event, className }: { event: Event; cla
|
|||||||
return (
|
return (
|
||||||
<div className={className}>
|
<div className={className}>
|
||||||
<div className="flex gap-1 mb-1 pl-4 text-xs items-center text-muted-foreground">
|
<div className="flex gap-1 mb-1 pl-4 text-xs items-center text-muted-foreground">
|
||||||
<Repeat2 size={12} />
|
<Repeat2 size={12} className="shrink-0" />
|
||||||
<Username userId={event.pubkey} className="font-semibold" />
|
<Username userId={event.pubkey} className="font-semibold truncate" />
|
||||||
<div>reposted</div>
|
<div>reposted</div>
|
||||||
</div>
|
</div>
|
||||||
<ShortTextNoteCard event={targetEvent} />
|
<ShortTextNoteCard event={targetEvent} />
|
||||||
|
|||||||
@@ -42,7 +42,9 @@ export default function NoteList({
|
|||||||
const sub = client.subscribeEvents(relayUrls, noteFilter, {
|
const sub = client.subscribeEvents(relayUrls, noteFilter, {
|
||||||
onEose: (events) => {
|
onEose: (events) => {
|
||||||
const processedEvents = events.filter((e) => !isReplyNoteEvent(e))
|
const processedEvents = events.filter((e) => !isReplyNoteEvent(e))
|
||||||
|
if (processedEvents.length > 0) {
|
||||||
setEvents((pre) => [...pre, ...processedEvents])
|
setEvents((pre) => [...pre, ...processedEvents])
|
||||||
|
}
|
||||||
if (events.length > 0) {
|
if (events.length > 0) {
|
||||||
setUntil(events[events.length - 1].created_at - 1)
|
setUntil(events[events.length - 1].created_at - 1)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { Separator } from '@renderer/components/ui/separator'
|
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 { cn } from '@renderer/lib/utils'
|
||||||
import { useNoteStats } from '@renderer/providers/NoteStatsProvider'
|
import { useNoteStats } from '@renderer/providers/NoteStatsProvider'
|
||||||
import client from '@renderer/services/client.service'
|
import client from '@renderer/services/client.service'
|
||||||
@@ -28,14 +28,17 @@ export default function ReplyNoteList({ event, className }: { event: Event; clas
|
|||||||
until
|
until
|
||||||
})
|
})
|
||||||
const sortedEvents = events.sort((a, b) => a.created_at - b.created_at)
|
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 eventMap: Record<string, Event> = {}
|
||||||
const eventsWithParentIds = sortedEvents.map((event) => {
|
const eventsWithParentIds = processedEvents.map((event) => {
|
||||||
eventMap[event.id] = event
|
eventMap[event.id] = event
|
||||||
return [event, getParentEventId(event)] as [Event, string | undefined]
|
return [event, getParentEventId(event)] as [Event, string | undefined]
|
||||||
})
|
})
|
||||||
setEventsWithParentId((pre) => [...eventsWithParentIds, ...pre])
|
setEventsWithParentId((pre) => [...eventsWithParentIds, ...pre])
|
||||||
setEventMap((pre) => ({ ...pre, ...eventMap }))
|
setEventMap((pre) => ({ ...pre, ...eventMap }))
|
||||||
|
}
|
||||||
|
if (sortedEvents.length > 0) {
|
||||||
setUntil(sortedEvents[0].created_at - 1)
|
setUntil(sortedEvents[0].created_at - 1)
|
||||||
}
|
}
|
||||||
setHasMore(sortedEvents.length >= 100)
|
setHasMore(sortedEvents.length >= 100)
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ export function isNsfwEvent(event: Event) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function isReplyNoteEvent(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) {
|
export function getParentEventId(event: Event) {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import ReplyNoteList from '@renderer/components/ReplyNoteList'
|
|
||||||
import Note from '@renderer/components/Note'
|
import Note from '@renderer/components/Note'
|
||||||
|
import ReplyNoteList from '@renderer/components/ReplyNoteList'
|
||||||
import { Separator } from '@renderer/components/ui/separator'
|
import { Separator } from '@renderer/components/ui/separator'
|
||||||
import SecondaryPageLayout from '@renderer/layouts/SecondaryPageLayout'
|
import SecondaryPageLayout from '@renderer/layouts/SecondaryPageLayout'
|
||||||
import { Event } from 'nostr-tools'
|
import { Event } from 'nostr-tools'
|
||||||
|
|||||||
Reference in New Issue
Block a user