a.type === "media" && a.mimeType?.startsWith("image")).map(a => a.content);
+ function renderContentWithHighlightedText(content: string, textToHighlight: string) {
+ const textToHighlightArray = textToHighlight.trim().toLowerCase().split(' ');
+ const re = new RegExp(`(${textToHighlightArray.join('|')})`, 'gi');
+ const splittedContent = content.split(re);
+
+ const fragments = splittedContent.map(c => {
+ if (textToHighlightArray.includes(c.toLowerCase())) {
+ return {
+ type: 'highlighted_text',
+ content: c,
+ } as ParsedFragment;
+ }
+
+ return c;
+ })
+
+ return (
+ <>
+ {fragments.map(f => {
+ if (typeof f === "string") {
+ return f;
+ }
+
+ return ;
+ })}
+ >
+ );
+ }
+
function renderChunk(a: ParsedFragment) {
if (a.type === "media" && !a.mimeType?.startsWith("unknown")) {
if (disableMedia ?? false) {
@@ -67,7 +98,9 @@ export default function Text({ content, tags, creator, disableMedia, depth, disa
case "custom_emoji":
return ;
default:
- return {a.content}
;
+ return
+ {highlighText ? renderContentWithHighlightedText(a.content, highlighText) : a.content}
+
;
}
}
}
diff --git a/packages/app/src/Element/Timeline.tsx b/packages/app/src/Element/Timeline.tsx
index 541a9d9e..4a48bf60 100644
--- a/packages/app/src/Element/Timeline.tsx
+++ b/packages/app/src/Element/Timeline.tsx
@@ -93,7 +93,7 @@ const Timeline = (props: TimelineProps) => {
return ;
}
return (
-
+
);
}
case EventKind.ZapReceipt: {
diff --git a/packages/app/src/Pages/DonatePage.tsx b/packages/app/src/Pages/DonatePage.tsx
index 9c1cc9c8..dc5b16af 100644
--- a/packages/app/src/Pages/DonatePage.tsx
+++ b/packages/app/src/Pages/DonatePage.tsx
@@ -22,6 +22,7 @@ const Contributors = [
bech32ToHex("npub179rec9sw2a5ngkr2wsjpjhwp2ksygjxn6uw5py9daj2ezhw3aw5swv3s6q"), // h3y6e - JA + other stuff
bech32ToHex("npub17q5n2z8naw0xl6vu9lvt560lg33pdpe29k0k09umlfxm3vc4tqrq466f2y"), // w3irdrobot
bech32ToHex("npub1ltx67888tz7lqnxlrg06x234vjnq349tcfyp52r0lstclp548mcqnuz40t"), // Vivek
+ bech32ToHex("npub1wh30wunfpkezx5s7edqu9g0s0raeetf5dgthzm0zw7sk8wqygmjqqfljgh"), // Fernando Porazzi
];
const Translators = [
diff --git a/packages/system/src/text.ts b/packages/system/src/text.ts
index ea273285..edd4502d 100644
--- a/packages/system/src/text.ts
+++ b/packages/system/src/text.ts
@@ -5,7 +5,7 @@ import { validateNostrLink } from "./nostr-link";
import { splitByUrl } from "./utils";
export interface ParsedFragment {
- type: "text" | "link" | "mention" | "invoice" | "media" | "cashu" | "hashtag" | "custom_emoji";
+ type: "text" | "link" | "mention" | "invoice" | "media" | "cashu" | "hashtag" | "custom_emoji" | "highlighted_text";
content: string;
mimeType?: string;
}