From 0bd5a3f4532a39dc49f9b516adaf18111e6cb9c6 Mon Sep 17 00:00:00 2001 From: silberengel Date: Thu, 14 Aug 2025 17:09:20 +0200 Subject: [PATCH] fix event result display --- src/lib/components/CommentViewer.svelte | 14 +- src/lib/components/EventDetails.svelte | 186 +++++++++++++----------- src/lib/components/RelayActions.svelte | 18 --- src/routes/events/+page.svelte | 128 +++++++++------- 4 files changed, 191 insertions(+), 155 deletions(-) diff --git a/src/lib/components/CommentViewer.svelte b/src/lib/components/CommentViewer.svelte index 3b44665..7e9576e 100644 --- a/src/lib/components/CommentViewer.svelte +++ b/src/lib/components/CommentViewer.svelte @@ -8,6 +8,7 @@ import type { NDKEvent } from "@nostr-dev-kit/ndk"; import { userBadge } from "$lib/snippets/UserSnippets.svelte"; import { parseBasicmarkup } from "$lib/utils/markup/basicMarkupParser"; + import { parseRepostContent, parseContent as parseNotificationContent } from "$lib/utils/notification_utils"; const { event } = $props<{ event: NDKEvent }>(); @@ -653,12 +654,15 @@ return `${actualLevel * 16}px`; } - async function parseContent(content: string): Promise { + async function parseContent(content: string, eventKind?: number): Promise { if (!content) return ""; - let parsedContent = await parseBasicmarkup(content); - - return parsedContent; + // Use parseRepostContent for kind 6 and 16 events (reposts) + if (eventKind === 6 || eventKind === 16) { + return await parseRepostContent(content); + } else { + return await parseNotificationContent(content); + } } @@ -825,7 +829,7 @@ {:else} - {#await parseContent(node.event.content || "") then parsedContent} + {#await parseContent(node.event.content || "", node.event.kind) then parsedContent} {@html parsedContent} {:catch} {@html node.event.content || ""} diff --git a/src/lib/components/EventDetails.svelte b/src/lib/components/EventDetails.svelte index 65cd830..d59f955 100644 --- a/src/lib/components/EventDetails.svelte +++ b/src/lib/components/EventDetails.svelte @@ -15,6 +15,8 @@ import { navigateToEvent } from "$lib/utils/nostrEventService"; import ContainingIndexes from "$lib/components/util/ContainingIndexes.svelte"; import Notifications from "$lib/components/Notifications.svelte"; + import { parseRepostContent } from "$lib/utils/notification_utils"; + import RelayActions from "$lib/components/RelayActions.svelte"; const { event, @@ -305,10 +307,18 @@ $effect(() => { if (event && event.kind !== 0 && event.content) { - parseBasicmarkup(event.content).then((html) => { - parsedContent = html; - contentPreview = html.slice(0, 250); - }); + // Use parseRepostContent for kind 6 and 16 events (reposts) + if (event.kind === 6 || event.kind === 16) { + parseRepostContent(event.content).then((html) => { + parsedContent = html; + contentPreview = html.slice(0, 250); + }); + } else { + parseBasicmarkup(event.content).then((html) => { + parsedContent = html; + contentPreview = html.slice(0, 250); + }); + } } }); @@ -436,30 +446,17 @@ {/if} - {#if getEventHashtags(event).length} -
- Tags: -
- {#each getEventHashtags(event) as tag} - - {/each} -
-
- {/if} + {#if event.kind !== 0} -
+
Content: -
+
{@html showFullContent ? parsedContent : contentPreview} {#if !showFullContent && parsedContent.length > 250} - {/if} - {/each} -
-
- {/if} -
- Show Raw Event JSON + Show details -
- + + +
+

Identifiers:

+
+ {#each getIdentifiers(event, profile) as identifier} +
+ {identifier.label}: +
+ + {identifier.value.slice(0, 20)}...{identifier.value.slice(-8)} + + +
+
+ {/each} +
-
+
+    
+    {#if event.tags && event.tags.length}
+      
+

Event Tags:

+
+ {#each event.tags as tag} + {@const tagInfo = getTagButtonInfo(tag)} + {#if tagInfo.text && tagInfo.gotoValue} + + {/if} + {/each} +
+
+ {/if} + + +
+

Raw Event JSON:

+
+
+ +
+
 {JSON.stringify(event.rawEvent(), null, 2)}
-    
+
+
+
diff --git a/src/lib/components/RelayActions.svelte b/src/lib/components/RelayActions.svelte index 4fd827d..88a01b3 100644 --- a/src/lib/components/RelayActions.svelte +++ b/src/lib/components/RelayActions.svelte @@ -72,24 +72,6 @@ } -
- -
- -{#if foundRelays.length > 0} -
- Found on {foundRelays.length} relay(s): -
- {#each foundRelays as relay} - - {/each} -
-
-{/if} -
Found on:
diff --git a/src/routes/events/+page.svelte b/src/routes/events/+page.svelte index fc86dc5..57748b0 100644 --- a/src/routes/events/+page.svelte +++ b/src/routes/events/+page.svelte @@ -20,6 +20,7 @@ import CommentViewer from "$lib/components/CommentViewer.svelte"; import { getEventType } from "$lib/utils/mime"; import ViewPublicationLink from "$lib/components/util/ViewPublicationLink.svelte"; import { checkCommunity } from "$lib/utils/search_utility"; + import { parseRepostContent, parseContent } from "$lib/utils/notification_utils"; let loading = $state(false); let error = $state(null); @@ -49,22 +50,24 @@ import CommentViewer from "$lib/components/CommentViewer.svelte"; let searchInProgress = $state(false); let secondOrderSearchMessage = $state(null); let communityStatus = $state>({}); + let searchResultsCollapsed = $state(false); userStore.subscribe((val) => (user = val)); function handleEventFound(newEvent: NDKEvent) { event = newEvent; showSidePanel = true; - // Clear search results when showing a single event - searchResults = []; - secondOrderResults = []; - tTagResults = []; - originalEventIds = new Set(); - originalAddresses = new Set(); - searchType = null; - searchTerm = null; - searchInProgress = false; - secondOrderSearchMessage = null; + // AI-NOTE: 2025-01-24 - Preserve search results to allow navigation through them + // Don't clear search results when showing a single event - this allows users to browse through results + // searchResults = []; + // secondOrderResults = []; + // tTagResults = []; + // originalEventIds = new Set(); + // originalAddresses = new Set(); + // searchType = null; + // searchTerm = null; + // searchInProgress = false; + // secondOrderSearchMessage = null; if (newEvent.kind === 0) { try { @@ -255,6 +258,10 @@ import CommentViewer from "$lib/components/CommentViewer.svelte"; secondOrderSearchMessage = null; } + function toggleSearchResults() { + searchResultsCollapsed = !searchResultsCollapsed; + } + function navigateToPublication(dTag: string) { goto(`/publications?d=${encodeURIComponent(dTag.toLowerCase())}`); } @@ -419,14 +426,24 @@ import CommentViewer from "$lib/components/CommentViewer.svelte";
Events - {#if showSidePanel} - - {/if} +
+ {#if showSidePanel && (searchResults.length > 0 || secondOrderResults.length > 0 || tTagResults.length > 0)} + + {/if} + {#if showSidePanel} + + {/if} +

@@ -457,19 +474,20 @@ import CommentViewer from "$lib/components/CommentViewer.svelte"; {#if searchResults.length > 0}

- - {#if searchType === "n"} - Search Results for name: "{searchTerm && searchTerm.length > 50 ? searchTerm.slice(0, 50) + '...' : searchTerm || ''}" ({searchResults.length} profiles) - {:else if searchType === "t"} - Search Results for t-tag: "{searchTerm && searchTerm.length > 50 ? searchTerm.slice(0, 50) + '...' : searchTerm || ''}" ({searchResults.length} - events) - {:else} - Search Results for d-tag: "{(() => { - const term = searchTerm || dTagValue?.toLowerCase() || ''; - return term.length > 50 ? term.slice(0, 50) + '...' : term; - })()}" ({searchResults.length} events) - {/if} - +
+ + {#if searchType === "n"} + Search Results for name: "{searchTerm && searchTerm.length > 50 ? searchTerm.slice(0, 50) + '...' : searchTerm || ''}" ({searchResults.length} profiles) + {:else if searchType === "t"} + Search Results for t-tag: "{searchTerm && searchTerm.length > 50 ? searchTerm.slice(0, 50) + '...' : searchTerm || ''}" ({searchResults.length} + events) + {:else} + Search Results for d-tag: "{(() => { + const term = searchTerm || dTagValue?.toLowerCase() || ''; + return term.length > 50 ? term.slice(0, 50) + '...' : term; + })()}" ({searchResults.length} events) + {/if} +
{#each searchResults as result, index} {@const profileData = parseProfileContent(result)} @@ -599,10 +617,11 @@ import CommentViewer from "$lib/components/CommentViewer.svelte";
- {result.content.slice(0, 200)}{result.content.length > - 200 - ? "..." - : ""} + {#await ((result.kind === 6 || result.kind === 16) ? parseRepostContent(result.content) : parseContent(result.content)) then parsedContent} + {@html parsedContent.slice(0, 200)}{parsedContent.length > 200 ? "..." : ""} + {:catch} + {result.content.slice(0, 200)}{result.content.length > 200 ? "..." : ""} + {/await}
{/if} {/if} @@ -610,15 +629,17 @@ import CommentViewer from "$lib/components/CommentViewer.svelte"; {/each}
+
{/if} {#if secondOrderResults.length > 0}
- - Second-Order Events (References, Replies, Quotes) ({secondOrderResults.length} - events) - +
+ + Second-Order Events (References, Replies, Quotes) ({secondOrderResults.length} + events) + {#if (searchType === "n" || searchType === "d") && secondOrderResults.length === 100}

Showing the 100 newest events. More results may be available. @@ -763,10 +784,11 @@ import CommentViewer from "$lib/components/CommentViewer.svelte";

- {result.content.slice(0, 200)}{result.content.length > - 200 - ? "..." - : ""} + {#await ((result.kind === 6 || result.kind === 16) ? parseRepostContent(result.content) : parseContent(result.content)) then parsedContent} + {@html parsedContent.slice(0, 200)}{parsedContent.length > 200 ? "..." : ""} + {:catch} + {result.content.slice(0, 200)}{result.content.length > 200 ? "..." : ""} + {/await}
{/if} {/if} @@ -774,15 +796,17 @@ import CommentViewer from "$lib/components/CommentViewer.svelte"; {/each}
+
{/if} {#if tTagResults.length > 0}
- - Search Results for t-tag: "{searchTerm || - dTagValue?.toLowerCase()}" ({tTagResults.length} events) - +
+ + Search Results for t-tag: "{searchTerm || + dTagValue?.toLowerCase()}" ({tTagResults.length} events) +

Events that are tagged with the t-tag.

@@ -914,10 +938,11 @@ import CommentViewer from "$lib/components/CommentViewer.svelte";
- {result.content.slice(0, 200)}{result.content.length > - 200 - ? "..." - : ""} + {#await ((result.kind === 6 || result.kind === 16) ? parseRepostContent(result.content) : parseContent(result.content)) then parsedContent} + {@html parsedContent.slice(0, 200)}{parsedContent.length > 200 ? "..." : ""} + {:catch} + {result.content.slice(0, 200)}{result.content.length > 200 ? "..." : ""} + {/await}
{/if} {/if} @@ -925,6 +950,7 @@ import CommentViewer from "$lib/components/CommentViewer.svelte"; {/each}
+
{/if}