From 7992601f4641db4d48dffdb4289695b1a4aac992 Mon Sep 17 00:00:00 2001 From: Kieran Date: Tue, 13 Jun 2023 14:46:16 +0100 Subject: [PATCH] bug: tryParseNostrLink --- packages/app/src/Element/NostrLink.tsx | 4 ++-- packages/app/src/Element/Thread.tsx | 4 ++-- packages/app/src/Pages/ProfilePage.tsx | 4 ++-- packages/system/src/EventBuilder.ts | 4 ++-- packages/system/src/RequestBuilder.ts | 10 ++++------ packages/system/src/Utils.ts | 12 ++++++------ 6 files changed, 18 insertions(+), 20 deletions(-) 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"]