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 ??= "";
+ }
}