fix: connect login relays before layout
continuous-integration/drone/push Build is passing Details

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 {
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);

View File

@ -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)) {

View File

@ -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<SystemSnapshot> {
*/
HandleAuth?: AuthHandler;
#log = debug("System");
constructor() {
super();
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) {
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);

View File

@ -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: <Layout />,
errorElement: <ErrorPage />,
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(