diff --git a/packages/app/src/Element/NostrLink.tsx b/packages/app/src/Element/NostrLink.tsx
index 28ea734a..bbbdbb6a 100644
--- a/packages/app/src/Element/NostrLink.tsx
+++ b/packages/app/src/Element/NostrLink.tsx
@@ -1,11 +1,11 @@
import { Link } from "react-router-dom";
-import { NostrPrefix, parseNostrLink } from "@snort/system";
+import { NostrPrefix, tryParseNostrLink } from "@snort/system";
import Mention from "Element/Mention";
import NoteQuote from "Element/NoteQuote";
export default function NostrLink({ link, depth }: { link: string; depth?: number }) {
- const nav = parseNostrLink(link);
+ const nav = tryParseNostrLink(link);
if (nav?.type === NostrPrefix.PublicKey || nav?.type === NostrPrefix.Profile) {
return ;
diff --git a/packages/app/src/Element/Thread.tsx b/packages/app/src/Element/Thread.tsx
index 7ab48b3d..eb6878f7 100644
--- a/packages/app/src/Element/Thread.tsx
+++ b/packages/app/src/Element/Thread.tsx
@@ -218,9 +218,9 @@ export default function Thread() {
const location = useLocation();
const link = parseNostrLink(params.id ?? "", NostrPrefix.Note);
- const thread = useThreadFeed(unwrap(link));
+ const thread = useThreadFeed(link);
- const [currentId, setCurrentId] = useState(link?.id);
+ const [currentId, setCurrentId] = useState(link.id);
const navigate = useNavigate();
const isSingleNote = thread.data?.filter(a => a.kind === EventKind.TextNote).length === 1;
diff --git a/packages/app/src/Pages/ProfilePage.tsx b/packages/app/src/Pages/ProfilePage.tsx
index 551b0c8f..5394f2c4 100644
--- a/packages/app/src/Pages/ProfilePage.tsx
+++ b/packages/app/src/Pages/ProfilePage.tsx
@@ -2,7 +2,7 @@ import "./ProfilePage.css";
import { useEffect, useState } from "react";
import { useIntl, FormattedMessage } from "react-intl";
import { useNavigate, useParams } from "react-router-dom";
-import { encodeTLV, EventKind, HexKey, NostrPrefix, parseNostrLink } from "@snort/system";
+import { encodeTLV, EventKind, HexKey, NostrPrefix, tryParseNostrLink } from "@snort/system";
import { getReactions, unwrap } from "SnortUtils";
import { formatShort } from "Number";
@@ -157,7 +157,7 @@ export default function ProfilePage() {
setId(a);
});
} else {
- const nav = parseNostrLink(params.id ?? "");
+ const nav = tryParseNostrLink(params.id ?? "");
if (nav?.type === NostrPrefix.PublicKey || nav?.type === NostrPrefix.Profile) {
// todo: use relays if any for nprofile
setId(nav.id);
diff --git a/packages/system/src/EventBuilder.ts b/packages/system/src/EventBuilder.ts
index a581c71e..a8c6099b 100644
--- a/packages/system/src/EventBuilder.ts
+++ b/packages/system/src/EventBuilder.ts
@@ -2,7 +2,7 @@ import { EventKind, HexKey, NostrPrefix, NostrEvent } from ".";
import { HashtagRegex } from "./Const";
import { getPublicKey, unixNow } from "./Utils";
import { EventExt } from "./EventExt";
-import { parseNostrLink } from "./NostrLink";
+import { tryParseNostrLink } from "./NostrLink";
export class EventBuilder {
#kind?: EventKind;
@@ -90,7 +90,7 @@ export class EventBuilder {
#replaceMention(match: string) {
const npub = match.slice(1);
- const link = parseNostrLink(npub);
+ const link = tryParseNostrLink(npub);
if (link) {
if (link.type === NostrPrefix.Profile || link.type === NostrPrefix.PublicKey) {
this.tag(["p", link.id]);
diff --git a/packages/system/src/RequestBuilder.ts b/packages/system/src/RequestBuilder.ts
index bfc4e2e6..129c0816 100644
--- a/packages/system/src/RequestBuilder.ts
+++ b/packages/system/src/RequestBuilder.ts
@@ -52,6 +52,7 @@ export class RequestBuilder {
id: string;
#builders: Array;
#options?: RequestBuilderOptions;
+ #log = debug("RequestBuilder");
constructor(id: string) {
this.id = id;
@@ -96,16 +97,13 @@ export class RequestBuilder {
*/
buildDiff(relays: RelayCache, filters: Array): Array {
const start = unixNowMs();
+
const next = this.#builders.flatMap(f => expandFilter(f.filter))
const diff = diffFilters(filters, next);
const ts = (unixNowMs() - start);
- const log = debug("buildDiff");
- log("%s %d ms", this.id, ts);
- if (ts > 200) {
- console.warn(diff, filters);
- }
+ this.#log("buildDiff %s %d ms", this.id, ts);
if (diff.changed) {
- log(diff);
+ this.#log(diff);
return splitAllByWriteRelays(relays, diff.added).map(a => {
return {
strategy: RequestStrategy.AuthorsRelays,
diff --git a/packages/system/src/Utils.ts b/packages/system/src/Utils.ts
index 40651e49..8eecf8f7 100644
--- a/packages/system/src/Utils.ts
+++ b/packages/system/src/Utils.ts
@@ -71,14 +71,14 @@ export function reqFilterEq(a: FlatReqFilter | ReqFilter, b: FlatReqFilter | Req
}
export function flatFilterEq(a: FlatReqFilter, b: FlatReqFilter): boolean {
- return a.ids === b.ids
- && a.kinds === b.kinds
- && a["#e"] === b["#e"]
- && a.authors === b.authors
- && a.limit === b.limit
- && a.since === b.since
+ return a.since === b.since
&& a.until === b.until
+ && a.limit === b.limit
&& a.search === b.search
+ && a.ids === b.ids
+ && a.kinds === b.kinds
+ && a.authors === b.authors
+ && a["#e"] === b["#e"]
&& a["#p"] === b["#p"]
&& a["#t"] === b["#t"]
&& a["#d"] === b["#d"]