From a7fa996e842f5cac3b07da35fcdd06b672a524cd Mon Sep 17 00:00:00 2001 From: Kieran Date: Tue, 13 Jun 2023 11:40:09 +0100 Subject: [PATCH] bug: empty relay list fallback --- packages/system/package.json | 2 +- packages/system/src/GossipModel.ts | 4 +-- packages/system/tests/GossipModel.test.ts | 31 +++++++++++++++++++++++ 3 files changed, 34 insertions(+), 3 deletions(-) create mode 100644 packages/system/tests/GossipModel.test.ts diff --git a/packages/system/package.json b/packages/system/package.json index 38616bf..60a7c99 100644 --- a/packages/system/package.json +++ b/packages/system/package.json @@ -1,6 +1,6 @@ { "name": "@snort/system", - "version": "1.0.1", + "version": "1.0.2", "description": "Snort nostr system package", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/system/src/GossipModel.ts b/packages/system/src/GossipModel.ts index 18aa1e7..e50a66e 100644 --- a/packages/system/src/GossipModel.ts +++ b/packages/system/src/GossipModel.ts @@ -62,8 +62,8 @@ export function splitByWriteRelays(cache: RelayCache, filter: ReqFilter): Array< }; }); - const missing = allRelays.filter(a => a.relays === undefined); - const hasRelays = allRelays.filter(a => a.relays !== undefined); + const missing = allRelays.filter(a => a.relays === undefined || a.relays.length === 0); + const hasRelays = allRelays.filter(a => a.relays !== undefined && a.relays.length > 0); const relayUserMap = hasRelays.reduce((acc, v) => { for (const r of unwrap(v.relays)) { if (!acc.has(r.url)) { diff --git a/packages/system/tests/GossipModel.test.ts b/packages/system/tests/GossipModel.test.ts new file mode 100644 index 0000000..90f154c --- /dev/null +++ b/packages/system/tests/GossipModel.test.ts @@ -0,0 +1,31 @@ +import { splitAllByWriteRelays } from "../src/GossipModel" + +describe("GossipModel", () => { + it("should not output empty", () => { + const Relays = { + get: (pk?: string) => { + return []; + } + } + const a = [{ + "until": 1686651693, + "limit": 200, + "kinds": [ + 1, + 6, + 6969 + ], + "authors": [ + "3bf0c63fcb93463407af97a5e5ee64fa883d107ef9e558472c4eb9aaaefa459d" + ] + }]; + + const output = splitAllByWriteRelays(Relays, a); + expect(output).toEqual([ + { + relay: "", + filters: a + } + ]) + }) +}) \ No newline at end of file