fix: connect login relays before layout
All checks were successful
continuous-integration/drone/push Build is passing

fix: save relays bug
This commit is contained in:
Kieran 2023-05-25 11:51:59 +01:00
parent 9bfb6ede0a
commit ca92b365e0
Signed by: Kieran
GPG Key ID: DE71CEB3925BE941
4 changed files with 14 additions and 5 deletions

View File

@ -27,7 +27,7 @@ const RelaySettingsPage = () => {
try { try {
const onlineRelays = await fetch("https://api.nostr.watch/v1/online").then(r => r.json()); const onlineRelays = await fetch("https://api.nostr.watch/v1/online").then(r => r.json());
const relayList = await publisher.relayList(login.relays.item); 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); publisher.broadcastAll(relayList, rs);
} catch (error) { } catch (error) {
console.error(error); console.error(error);

View File

@ -255,7 +255,7 @@ export class Query implements QueryBase {
return false; return false;
} }
if ((q.relays?.length ?? 0) === 0 && c.Ephemeral) { 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; return false;
} }
if (q.filters.some(a => a.search) && !c.SupportsNip(Nips.Search)) { if (q.filters.some(a => a.search) && !c.SupportsNip(Nips.Search)) {

View File

@ -1,4 +1,5 @@
import { AuthHandler, TaggedRawEvent, RelaySettings, Connection, RawReqFilter, RawEvent } from "@snort/nostr"; import { AuthHandler, TaggedRawEvent, RelaySettings, Connection, RawReqFilter, RawEvent } from "@snort/nostr";
import debug from "debug";
import { sanitizeRelayUrl, unixNowMs, unwrap } from "SnortUtils"; import { sanitizeRelayUrl, unixNowMs, unwrap } from "SnortUtils";
import { RequestBuilder } from "./RequestBuilder"; import { RequestBuilder } from "./RequestBuilder";
@ -57,6 +58,8 @@ export class NostrSystem extends ExternalStore<SystemSnapshot> {
*/ */
HandleAuth?: AuthHandler; HandleAuth?: AuthHandler;
#log = debug("System");
constructor() { constructor() {
super(); super();
this.Sockets = new Map(); this.Sockets = new Map();
@ -251,8 +254,9 @@ export class NostrSystem extends ExternalStore<SystemSnapshot> {
} }
async SendQuery(q: Query, qSend: QueryBase, qSender: (q: Query, qSend: QueryBase, c: Connection) => void) { async SendQuery(q: Query, qSend: QueryBase, qSender: (q: Query, qSend: QueryBase, c: Connection) => void) {
if (q.relays && q.relays.length > 0) { if (qSend.relays && qSend.relays.length > 0) {
for (const r of q.relays) { for (const r of qSend.relays) {
this.#log("Sending query to %s %O", r, qSend);
const s = this.Sockets.get(r); const s = this.Sockets.get(r);
if (s) { if (s) {
qSender(q, qSend, s); qSender(q, qSend, s);

View File

@ -35,6 +35,7 @@ import DebugPage from "Pages/Debug";
import { db } from "Db"; import { db } from "Db";
import { preload } from "Cache"; import { preload } from "Cache";
import { LoginStore } from "Login"; import { LoginStore } from "Login";
import { System } from "System";
// @ts-expect-error Setting webpack nonce // @ts-expect-error Setting webpack nonce
window.__webpack_nonce__ = "ZmlhdGphZiBzYWlkIHNub3J0LnNvY2lhbCBpcyBwcmV0dHkgZ29vZCwgd2UgbWFkZSBpdCE="; window.__webpack_nonce__ = "ZmlhdGphZiBzYWlkIHNub3J0LnNvY2lhbCBpcyBwcmV0dHkgZ29vZCwgd2UgbWFkZSBpdCE=";
@ -46,11 +47,15 @@ export const router = createBrowserRouter([
element: <Layout />, element: <Layout />,
errorElement: <ErrorPage />, errorElement: <ErrorPage />,
loader: async () => { loader: async () => {
const login = LoginStore.takeSnapshot();
db.ready = await db.isAvailable(); db.ready = await db.isAvailable();
if (db.ready) { 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 { try {
if ("registerProtocolHandler" in window.navigator) { if ("registerProtocolHandler" in window.navigator) {
window.navigator.registerProtocolHandler( window.navigator.registerProtocolHandler(