From 467e1aef8f74eca4a9ddad84d01707af04da1dd2 Mon Sep 17 00:00:00 2001 From: smolgrrr Date: Sat, 6 Jan 2024 18:09:12 +1100 Subject: [PATCH] smol fix --- client/src/utils/relays.ts | 40 ++++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/client/src/utils/relays.ts b/client/src/utils/relays.ts index a81afc1..2b5ad88 100644 --- a/client/src/utils/relays.ts +++ b/client/src/utils/relays.ts @@ -16,15 +16,10 @@ const currentSubList: Array = []; const relayMap = new Map(); export const addRelay = async (url: string) => { - const relay = await Relay.connect(url); - // relay.on('connect', () => { - // console.info(`connected to ${relay.url}`); - // }); - // relay.on('error', () => { - // console.warn(`failed to connect to ${relay.url}`); - // }); + const relay = await Relay.connect(url) + console.log(`connected to ${relay.url}`) try { - await relay.connect(); + currentSubList.forEach(({cb, filter}) => subscribe(cb, filter, relay)); relayMap.set(url, relay); } catch { @@ -43,18 +38,21 @@ const subscribe = ( relay: Relay, unsub?: boolean ) => { - const sub = relay.subscribe([filter], - { - onevent(event) { - cb(event, relay.url); - }, - oneose() { - if (unsub) { - unsubscribe(sub); - } - } - }); + const sub = relay.subscribe([filter], { + onevent(event) { + cb(event, relay.url); + }, + }); subList.push(sub); + + if (unsub) { + if (typeof sub.oneose === 'function') { + sub.oneose = () => { + // console.log('eose', relay.url); + unsubscribe(sub); + }; + } + } return sub; }; @@ -69,6 +67,10 @@ export const subOnce = ( const relay = relayMap.get(obj.relay); if (relay) { const sub = subscribe(obj.cb, obj.filter, relay); + sub.oneose = () => { + // console.log('eose', relay.url); + unsubscribe(sub); + }; } };