From ca92b365e0dbbcb8746301114bcd371e1fc0183f Mon Sep 17 00:00:00 2001 From: Kieran Date: Thu, 25 May 2023 11:51:59 +0100 Subject: [PATCH] fix: connect login relays before layout fix: save relays bug --- packages/app/src/Pages/settings/Relays.tsx | 2 +- packages/app/src/System/Query.ts | 2 +- packages/app/src/System/index.ts | 8 ++++++-- packages/app/src/index.tsx | 7 ++++++- 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/packages/app/src/Pages/settings/Relays.tsx b/packages/app/src/Pages/settings/Relays.tsx index f2f42435..0cf5b6b2 100644 --- a/packages/app/src/Pages/settings/Relays.tsx +++ b/packages/app/src/Pages/settings/Relays.tsx @@ -27,7 +27,7 @@ const RelaySettingsPage = () => { try { const onlineRelays = await fetch("https://api.nostr.watch/v1/online").then(r => r.json()); const relayList = await publisher.relayList(login.relays.item); - const rs = Object.keys(relays).concat(randomSample(onlineRelays, 20)); + const rs = Object.keys(relays.item).concat(randomSample(onlineRelays, 20)); publisher.broadcastAll(relayList, rs); } catch (error) { console.error(error); diff --git a/packages/app/src/System/Query.ts b/packages/app/src/System/Query.ts index 9622e959..16e0b8eb 100644 --- a/packages/app/src/System/Query.ts +++ b/packages/app/src/System/Query.ts @@ -255,7 +255,7 @@ export class Query implements QueryBase { return false; } if ((q.relays?.length ?? 0) === 0 && c.Ephemeral) { - this.#log("Cant send non-specific REQ to ephemeral connection %o", q.relays); + this.#log("Cant send non-specific REQ to ephemeral connection %O %O %O", q, q.relays, c); return false; } if (q.filters.some(a => a.search) && !c.SupportsNip(Nips.Search)) { diff --git a/packages/app/src/System/index.ts b/packages/app/src/System/index.ts index 9a061a84..ed3ba4e8 100644 --- a/packages/app/src/System/index.ts +++ b/packages/app/src/System/index.ts @@ -1,4 +1,5 @@ import { AuthHandler, TaggedRawEvent, RelaySettings, Connection, RawReqFilter, RawEvent } from "@snort/nostr"; +import debug from "debug"; import { sanitizeRelayUrl, unixNowMs, unwrap } from "SnortUtils"; import { RequestBuilder } from "./RequestBuilder"; @@ -57,6 +58,8 @@ export class NostrSystem extends ExternalStore { */ HandleAuth?: AuthHandler; + #log = debug("System"); + constructor() { super(); this.Sockets = new Map(); @@ -251,8 +254,9 @@ export class NostrSystem extends ExternalStore { } async SendQuery(q: Query, qSend: QueryBase, qSender: (q: Query, qSend: QueryBase, c: Connection) => void) { - if (q.relays && q.relays.length > 0) { - for (const r of q.relays) { + if (qSend.relays && qSend.relays.length > 0) { + for (const r of qSend.relays) { + this.#log("Sending query to %s %O", r, qSend); const s = this.Sockets.get(r); if (s) { qSender(q, qSend, s); diff --git a/packages/app/src/index.tsx b/packages/app/src/index.tsx index c3e3313c..9ab1b151 100644 --- a/packages/app/src/index.tsx +++ b/packages/app/src/index.tsx @@ -35,6 +35,7 @@ import DebugPage from "Pages/Debug"; import { db } from "Db"; import { preload } from "Cache"; import { LoginStore } from "Login"; +import { System } from "System"; // @ts-expect-error Setting webpack nonce window.__webpack_nonce__ = "ZmlhdGphZiBzYWlkIHNub3J0LnNvY2lhbCBpcyBwcmV0dHkgZ29vZCwgd2UgbWFkZSBpdCE="; @@ -46,11 +47,15 @@ export const router = createBrowserRouter([ element: , errorElement: , loader: async () => { + const login = LoginStore.takeSnapshot(); db.ready = await db.isAvailable(); if (db.ready) { - await preload(LoginStore.takeSnapshot().follows.item); + await preload(login.follows.item); } + for (const [k, v] of Object.entries(login.relays.item)) { + await System.ConnectToRelay(k, v); + } try { if ("registerProtocolHandler" in window.navigator) { window.navigator.registerProtocolHandler(