diff --git a/src/lib/components/CommentBox.svelte b/src/lib/components/CommentBox.svelte index 5a7396e..2c9d43d 100644 --- a/src/lib/components/CommentBox.svelte +++ b/src/lib/components/CommentBox.svelte @@ -1,16 +1,10 @@
- {#if event.kind !== 0 && parsedTitle} + {#if event.kind !== 0}

- {@html parsedTitle} + {@render basicMarkup(getEventTitle(event), ndk)}

{/if} @@ -352,20 +302,20 @@ >
- {#if parsedSummary} -
- Summary: -
- {@html parsedSummary} -
+
+ Summary: +
+ {@render basicMarkup(getEventSummary(event), ndk)}
- {/if} +
{#if event.kind !== 0} + {@const kind = event.kind} + {@const content = event.content.trim()}
Content: @@ -387,12 +337,16 @@ Quote repost:
{@render quotedContent(event, [], getNdkContext())} - {#if event.content && event.content.trim()} + {#if content}
Added comment:
- {@html parsedContent} + {#if repostKinds.includes(kind)} + {@html content} + {:else} + {@render basicMarkup(content, ndk)} + {/if}
{/if}
@@ -400,7 +354,11 @@ {:else}
- {@html parsedContent} + {#if repostKinds.includes(kind)} + {@html content} + {:else} + {@render basicMarkup(content, ndk)} + {/if}
{#if shouldTruncate}
{/if} {:else} - {#await parseBasicmarkup(message.content || "No content", ndk) then parsed} - {@html parsed} - {/await} + {@render basicMarkup(message.content || "No content", ndk)} {/if} @@ -951,17 +946,13 @@
Comment:
- {#await parseBasicmarkup(notification.content, ndk) then parsed} - {@html parsed} - {/await} + {@render basicMarkup(notification.content, ndk)} {/if} {:else} - {#await parseBasicmarkup(notification.content || "No content", ndk) then parsed} - {@html parsed} - {/await} + {@render basicMarkup(notification.content || "No content", ndk)} {/if} @@ -999,9 +990,7 @@
Replying to:
- {#await parseBasicmarkup(replyToMessage.content || "No content", ndk) then parsed} - {@html parsed} - {/await} + {@render basicMarkup(replyToMessage.content || "No content", ndk)}
diff --git a/src/lib/components/cards/ProfileHeader.svelte b/src/lib/components/cards/ProfileHeader.svelte index a095434..d58c13c 100644 --- a/src/lib/components/cards/ProfileHeader.svelte +++ b/src/lib/components/cards/ProfileHeader.svelte @@ -17,7 +17,8 @@ import { goto } from "$app/navigation"; import { isPubkeyInUserLists, fetchCurrentUserLists } from "$lib/utils/user_lists"; import { UserOutline } from "flowbite-svelte-icons"; - import { parseBasicmarkup } from "$lib/utils/markup/basicMarkupParser"; + import { basicMarkup } from "$lib/snippets/MarkupSnippets.svelte"; + import { getNdkContext } from "$lib/ndk"; const { event, @@ -31,11 +32,12 @@ communityStatusMap?: Record; }>(); + const ndk = getNdkContext(); + let lnModalOpen = $state(false); let lnurl = $state(null); let communityStatus = $state(null); let isInUserLists = $state(null); - let parsedAbout = $state(""); onMount(async () => { if (profile?.lud16) { @@ -92,19 +94,6 @@ } }); - $effect(() => { - if (profile?.about) { - parseBasicmarkup(profile.about).then((processed) => { - parsedAbout = processed; - }).catch((error) => { - console.error("Error parsing about:", error); - parsedAbout = profile.about; - }); - } else { - parsedAbout = ""; - } - }); - function navigateToIdentifier(link: string) { goto(link); } @@ -211,12 +200,12 @@
{profile.displayName}
{/if} - {#if parsedAbout} + {#if profile.about}
About:
- {@html parsedAbout} + {@render basicMarkup(profile.about, ndk)}
diff --git a/src/lib/components/embedded_events/EmbeddedEvent.svelte b/src/lib/components/embedded_events/EmbeddedEvent.svelte index 005dea8..9b30919 100644 --- a/src/lib/components/embedded_events/EmbeddedEvent.svelte +++ b/src/lib/components/embedded_events/EmbeddedEvent.svelte @@ -2,7 +2,7 @@ import type { NDKEvent } from "@nostr-dev-kit/ndk"; import { fetchEventWithFallback, getUserMetadata, toNpub } from "$lib/utils/nostrUtils"; import { userBadge } from "$lib/snippets/UserSnippets.svelte"; - import { parsedContent, repostContent, quotedContent } from "$lib/components/embedded_events/EmbeddedSnippets.svelte"; + import { parsedContent, repostContent, quotedContent } from "$lib/snippets/EmbeddedSnippets.svelte"; import { naddrEncode } from "$lib/utils"; import { activeInboxRelays, getNdkContext } from "$lib/ndk"; import { goto } from "$app/navigation"; diff --git a/src/lib/components/embedded_events/EmbeddedSnippets.svelte b/src/lib/snippets/EmbeddedSnippets.svelte similarity index 99% rename from src/lib/components/embedded_events/EmbeddedSnippets.svelte rename to src/lib/snippets/EmbeddedSnippets.svelte index e23c35f..8245e74 100644 --- a/src/lib/components/embedded_events/EmbeddedSnippets.svelte +++ b/src/lib/snippets/EmbeddedSnippets.svelte @@ -7,7 +7,7 @@ import { buildCompleteRelaySet } from "$lib/utils/relay_management"; import { nip19 } from "nostr-tools"; import { parseEmbeddedMarkup } from "$lib/utils/markup/embeddedMarkupParser"; - import type NDK from "@nostr-dev-kit/ndk"; + import type NDK from "@nostr-dev-kit/ndk"; export { parsedContent, diff --git a/src/lib/snippets/MarkupSnippets.svelte b/src/lib/snippets/MarkupSnippets.svelte new file mode 100644 index 0000000..eb08603 --- /dev/null +++ b/src/lib/snippets/MarkupSnippets.svelte @@ -0,0 +1,14 @@ + + +{#snippet basicMarkup(text: string, ndk?: NDK)} + {#await parseBasicMarkup(text, ndk) then parsed} + {@html parsed} + {:catch error: Error} +
Error processing markup: {error.message}
+ {/await} +{/snippet} diff --git a/src/lib/utils/markup/advancedMarkupParser.ts b/src/lib/utils/markup/advancedMarkupParser.ts index 3a4816c..63da62a 100644 --- a/src/lib/utils/markup/advancedMarkupParser.ts +++ b/src/lib/utils/markup/advancedMarkupParser.ts @@ -1,4 +1,4 @@ -import { parseBasicmarkup } from "./basicMarkupParser.ts"; +import { parseBasicMarkup } from "./basicMarkupParser.ts"; import hljs from "highlight.js"; import "highlight.js/lib/common"; // Import common languages import "highlight.js/styles/github-dark.css"; // Dark theme only @@ -444,7 +444,7 @@ export async function parseAdvancedmarkup(text: string): Promise { // Step 4: Process block-level elements (tables, headings, horizontal rules) // AI-NOTE: 2025-01-24 - Removed duplicate processBlockquotes call to fix image rendering issues - // Blockquotes are now processed only by parseBasicmarkup to avoid double-processing conflicts + // Blockquotes are now processed only by parseBasicMarkup to avoid double-processing conflicts processedText = processTables(processedText); processedText = processHeadings(processedText); processedText = processHorizontalRules(processedText); @@ -454,7 +454,7 @@ export async function parseAdvancedmarkup(text: string): Promise { // Step 6: Process basic markup (which will also handle Nostr identifiers) // This includes paragraphs, inline code, links, lists, etc. - processedText = await parseBasicmarkup(processedText); + processedText = await parseBasicMarkup(processedText); // Step 7: Restore code blocks processedText = restoreCodeBlocks(processedText, blocks); diff --git a/src/lib/utils/markup/basicMarkupParser.ts b/src/lib/utils/markup/basicMarkupParser.ts index 4b90151..6c7611f 100644 --- a/src/lib/utils/markup/basicMarkupParser.ts +++ b/src/lib/utils/markup/basicMarkupParser.ts @@ -8,7 +8,6 @@ import { processImageWithReveal, processMediaUrl, processNostrIdentifiersInText, - processAllNostrIdentifiers, processWebSocketUrls, processWikilinks, stripTrackingParams, @@ -217,7 +216,7 @@ function processBasicFormatting(content: string): string { return processedText; } -export async function parseBasicmarkup(text: string, ndk?: NDK): Promise { +export async function parseBasicMarkup(text: string, ndk?: NDK): Promise { if (!text) return ""; try { @@ -258,10 +257,7 @@ export async function parseBasicmarkup(text: string, ndk?: NDK): Promise processedText = processWikilinks(processedText); return processedText; - } catch (e: unknown) { - console.error("Error in parseBasicmarkup:", e); - return `
Error processing markup: ${ - (e as Error)?.message ?? "Unknown error" - }
`; + } catch (e) { + throw new Error(`Error in parseBasicMarkup: ${e}`); } } diff --git a/src/routes/events/+page.svelte b/src/routes/events/+page.svelte index b17c08c..7a0bd52 100644 --- a/src/routes/events/+page.svelte +++ b/src/routes/events/+page.svelte @@ -21,10 +21,8 @@ import { getEventType } from "$lib/utils/mime"; import ViewPublicationLink from "$lib/components/util/ViewPublicationLink.svelte"; import { checkCommunity } from "$lib/utils/search_utility"; - import { parseBasicmarkup } from "$lib/utils/markup/basicMarkupParser"; - import { repostContent, quotedContent } from "$lib/components/embedded_events/EmbeddedSnippets.svelte"; + import { repostContent, quotedContent } from "$lib/snippets/EmbeddedSnippets.svelte"; import { repostKinds } from "$lib/consts"; - import { userStore } from "$lib/stores/userStore"; import { fetchCurrentUserLists, @@ -34,6 +32,7 @@ import type { UserProfile } from "$lib/models/user_profile"; import type { SearchType } from "$lib/models/search_type"; import { clearAllCaches } from "$lib/utils/cache_manager"; + import { basicMarkup } from "$lib/snippets/MarkupSnippets.svelte"; // AI-NOTE: 2025-01-24 - Add cache clearing function for testing second-order search // This can be called from browser console: window.clearCache() @@ -796,17 +795,13 @@
Comment:
- {#await parseBasicmarkup(result.content.slice(0, 100) + (result.content.length > 100 ? "..." : "")) then parsed} - {@html parsed} - {/await} + {@render basicMarkup(result.content.slice(0, 100) + (result.content.length > 100 ? "..." : ""), ndk)} {/if} {:else} - {#await parseBasicmarkup(result.content.slice(0, 200) + (result.content.length > 200 ? "..." : "")) then parsed} - {@html parsed} - {/await} + {@render basicMarkup(result.content.slice(0, 200) + (result.content.length > 200 ? "..." : ""), ndk)} {/if} {/if} @@ -1011,17 +1006,13 @@
Comment:
- {#await parseBasicmarkup(result.content.slice(0, 100) + (result.content.length > 100 ? "..." : "")) then parsed} - {@html parsed} - {/await} + {@render basicMarkup(result.content.slice(0, 100) + (result.content.length > 100 ? "..." : ""), ndk)} {/if} {:else} - {#await parseBasicmarkup(result.content.slice(0, 200) + (result.content.length > 200 ? "..." : "")) then parsed} - {@html parsed} - {/await} + {@render basicMarkup(result.content.slice(0, 200) + (result.content.length > 200 ? "..." : ""), ndk)} {/if} {/if} @@ -1212,17 +1203,13 @@
Comment:
- {#await parseBasicmarkup(result.content.slice(0, 100) + (result.content.length > 100 ? "..." : "")) then parsed} - {@html parsed} - {/await} + {@render basicMarkup(result.content.slice(0, 100) + (result.content.length > 100 ? "..." : ""), ndk)} {/if} {:else} - {#await parseBasicmarkup(result.content.slice(0, 200) + (result.content.length > 200 ? "..." : "")) then parsed} - {@html parsed} - {/await} + {@render basicMarkup(result.content.slice(0, 200) + (result.content.length > 200 ? "..." : ""), ndk)} {/if} {/if}