diff --git a/packages/app/src/Element/HyperText.tsx b/packages/app/src/Element/HyperText.tsx index 32b4548c..22ddebd9 100644 --- a/packages/app/src/Element/HyperText.tsx +++ b/packages/app/src/Element/HyperText.tsx @@ -27,9 +27,10 @@ import MagnetLink from "Element/MagnetLink"; interface HypeTextProps { link: string; depth?: number; + showLinkPreview?: boolean; } -export default function HyperText({ link, depth }: HypeTextProps) { +export default function HyperText({ link, depth, showLinkPreview }: HypeTextProps) { const a = link; try { const url = new URL(a); @@ -91,7 +92,7 @@ export default function HyperText({ link, depth }: HypeTextProps) { if (parsed) { return ; } - } else { + } else if (showLinkPreview ?? true) { return ; } } catch { diff --git a/packages/app/src/Element/NoteReaction.tsx b/packages/app/src/Element/NoteReaction.tsx index 060c7f1c..ba49392f 100644 --- a/packages/app/src/Element/NoteReaction.tsx +++ b/packages/app/src/Element/NoteReaction.tsx @@ -1,7 +1,7 @@ import "./NoteReaction.css"; import { Link } from "react-router-dom"; import { useMemo } from "react"; -import { EventKind, NostrEvent, TaggedNostrEvent, NostrPrefix } from "@snort/system"; +import { EventKind, NostrEvent, TaggedNostrEvent, NostrPrefix, EventExt } from "@snort/system"; import Note from "Element/Note"; import { getDisplayName } from "Element/ProfileImage"; @@ -46,6 +46,11 @@ export default function NoteReaction(props: NoteReactionProps) { if (ev?.kind === EventKind.Repost && ev.content.length > 0 && ev.content !== "#[0]") { try { const r: NostrEvent = JSON.parse(ev.content); + EventExt.fixupEvent(r); + if(!EventExt.verify(r)) { + console.debug("Event in repost is invalid"); + return undefined; + } return r as TaggedNostrEvent; } catch (e) { console.error("Could not load reposted content", e); diff --git a/packages/app/src/Element/Text.tsx b/packages/app/src/Element/Text.tsx index 1ec1b6d4..013cff67 100644 --- a/packages/app/src/Element/Text.tsx +++ b/packages/app/src/Element/Text.tsx @@ -63,7 +63,7 @@ export default function Text({ content, tags, creator, disableMedia, depth, disa return ; case "media": case "link": - return ; + return ; case "custom_emoji": return ; default: diff --git a/packages/app/src/Pages/ProfilePage.tsx b/packages/app/src/Pages/ProfilePage.tsx index 6ff75f64..ca06a568 100644 --- a/packages/app/src/Pages/ProfilePage.tsx +++ b/packages/app/src/Pages/ProfilePage.tsx @@ -121,8 +121,9 @@ export default function ProfilePage() { const about = Text({ content: aboutText, tags: [], - creator: "", + creator: id ?? "", disableMedia: true, + disableMediaSpotlight: true, }); const npub = !id?.startsWith(NostrPrefix.PublicKey) ? hexToBech32(NostrPrefix.PublicKey, id || undefined) : id; diff --git a/packages/system/src/event-ext.ts b/packages/system/src/event-ext.ts index 9a048387..2e8d76d4 100644 --- a/packages/system/src/event-ext.ts +++ b/packages/system/src/event-ext.ts @@ -138,4 +138,17 @@ export abstract class EventExt { ret.pubKeys = Array.from(new Set(ev.tags.filter(a => a[0] === "p").map(a => a[1]))); return ret; } + + /** + * Assign props if undefined + */ + static fixupEvent(e: NostrEvent) { + e.tags ??= []; + e.created_at ??= 0; + e.content ??= ""; + e.id ??= ""; + e.kind ??= 0; + e.pubkey ??= ""; + e.sig ??= ""; + } }