This commit is contained in:
smolgrrr 2024-01-06 18:09:12 +11:00
parent 3203349573
commit 467e1aef8f

View File

@ -16,15 +16,10 @@ const currentSubList: Array<Subscribe> = [];
const relayMap = new Map<string, Relay>(); const relayMap = new Map<string, Relay>();
export const addRelay = async (url: string) => { export const addRelay = async (url: string) => {
const relay = await Relay.connect(url); const relay = await Relay.connect(url)
// relay.on('connect', () => { console.log(`connected to ${relay.url}`)
// console.info(`connected to ${relay.url}`);
// });
// relay.on('error', () => {
// console.warn(`failed to connect to ${relay.url}`);
// });
try { try {
await relay.connect();
currentSubList.forEach(({cb, filter}) => subscribe(cb, filter, relay)); currentSubList.forEach(({cb, filter}) => subscribe(cb, filter, relay));
relayMap.set(url, relay); relayMap.set(url, relay);
} catch { } catch {
@ -43,18 +38,21 @@ const subscribe = (
relay: Relay, relay: Relay,
unsub?: boolean unsub?: boolean
) => { ) => {
const sub = relay.subscribe([filter], const sub = relay.subscribe([filter], {
{
onevent(event) { onevent(event) {
cb(event, relay.url); cb(event, relay.url);
}, },
oneose() {
if (unsub) {
unsubscribe(sub);
}
}
}); });
subList.push(sub); subList.push(sub);
if (unsub) {
if (typeof sub.oneose === 'function') {
sub.oneose = () => {
// console.log('eose', relay.url);
unsubscribe(sub);
};
}
}
return sub; return sub;
}; };
@ -69,6 +67,10 @@ export const subOnce = (
const relay = relayMap.get(obj.relay); const relay = relayMap.get(obj.relay);
if (relay) { if (relay) {
const sub = subscribe(obj.cb, obj.filter, relay); const sub = subscribe(obj.cb, obj.filter, relay);
sub.oneose = () => {
// console.log('eose', relay.url);
unsubscribe(sub);
};
} }
}; };