diff --git a/src/components/nostr/QuotedEvent.tsx b/src/components/nostr/QuotedEvent.tsx index 624605f..3d5d4aa 100644 --- a/src/components/nostr/QuotedEvent.tsx +++ b/src/components/nostr/QuotedEvent.tsx @@ -18,6 +18,8 @@ interface QuotedEventProps { depth?: number; /** Optional className for container */ className?: string; + /** Hide preview text when collapsed (for sensitive content) */ + hidePreview?: boolean; } /** @@ -31,6 +33,7 @@ export function QuotedEvent({ onOpen, depth = 1, className, + hidePreview = false, }: QuotedEventProps) { const [isExpanded, setIsExpanded] = useState(depth < 2); @@ -99,10 +102,17 @@ export function QuotedEvent({ >
- - {previewText} - {hasMore && "..."} - + {!hidePreview && ( + + {previewText} + {hasMore && "..."} + + )} + {hidePreview && !isExpanded && ( + + Click to reveal content + + )}
{isExpanded ? ( diff --git a/src/components/nostr/kinds/ReportRenderer.tsx b/src/components/nostr/kinds/ReportRenderer.tsx index 63b47ee..3359a98 100644 --- a/src/components/nostr/kinds/ReportRenderer.tsx +++ b/src/components/nostr/kinds/ReportRenderer.tsx @@ -18,6 +18,7 @@ import { import { BaseEventProps, BaseEventContainer } from "./BaseEventRenderer"; import { QuotedEvent } from "@/components/nostr/QuotedEvent"; import { UserName } from "@/components/nostr/UserName"; +import { useGrimoire } from "@/core/state"; import { getReportInfo, type ReportType, @@ -52,6 +53,7 @@ function getReportTypeIcon(reportType: ReportType) { * Renderer for Kind 1984 - Reports (NIP-56) */ export function ReportRenderer({ event }: BaseEventProps) { + const { addWindow } = useGrimoire(); // Parse report using cached helper (no useMemo needed - applesauce caches internally) const report = getReportInfo(event); @@ -67,26 +69,34 @@ export function ReportRenderer({ event }: BaseEventProps) { const reasonLabel = REPORT_TYPE_LABELS[report.reportType].toLowerCase(); + // Open report detail view + const openReportDetail = (e: React.MouseEvent) => { + e.stopPropagation(); + addWindow("open", { pointer: { id: event.id } }); + }; + return (
- {/* Report header: "Reported for " */} -
+ {/* Report header: "Reported for " - whole line clickable */} +
+ - {/* Reported event - collapsed by default (depth=2) */} + {/* Reported event - collapsed with hidden preview (depth=2, hidePreview) */} {report.targetType === "event" && report.reportedEventId && ( )}