From a6ec01d1e8d4d0eaf46ecf9ac64621ae28ddca8e Mon Sep 17 00:00:00 2001 From: codytseng Date: Wed, 15 Jan 2025 10:02:08 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=F0=9F=90=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../RelaySetsSetting/PullFromRelaysButton.tsx | 39 ++++++++++--------- src/providers/RelaySetsProvider.tsx | 2 +- 2 files changed, 22 insertions(+), 19 deletions(-) diff --git a/src/components/RelaySetsSetting/PullFromRelaysButton.tsx b/src/components/RelaySetsSetting/PullFromRelaysButton.tsx index 365fbdde..d5b9a100 100644 --- a/src/components/RelaySetsSetting/PullFromRelaysButton.tsx +++ b/src/components/RelaySetsSetting/PullFromRelaysButton.tsx @@ -94,26 +94,29 @@ function RemoteRelaySets({ close }: { close?: () => void }) { limit: 50 } ) - setRelaySets( - events - .map((evt) => { - const id = evt.tags.find(tagNameEquals('d'))?.[1] - if (!id) return null + events.sort((a, b) => b.created_at - a.created_at) - const relayUrls = evt.tags - .filter(tagNameEquals('relay')) - .map((tag) => tag[1]) - .filter((url) => url && isWebsocketUrl(url)) - if (!relayUrls.length) return null + const relaySetIds = new Set() + const relaySets: TRelaySet[] = [] + events.forEach((evt) => { + const id = evt.tags.find(tagNameEquals('d'))?.[1] + if (!id || relaySetIds.has(id)) return - let title = evt.tags.find(tagNameEquals('title'))?.[1] - if (!title) { - title = relayUrls.length === 1 ? simplifyUrl(relayUrls[0]) : id - } - return { id, name: title, relayUrls } - }) - .filter(Boolean) as TRelaySet[] - ) + relaySetIds.add(id) + const relayUrls = evt.tags + .filter(tagNameEquals('relay')) + .map((tag) => tag[1]) + .filter((url) => url && isWebsocketUrl(url)) + if (!relayUrls.length) return + + let title = evt.tags.find(tagNameEquals('title'))?.[1] + if (!title) { + title = relayUrls.length === 1 ? simplifyUrl(relayUrls[0]) : id + } + relaySets.push({ id, name: title, relayUrls }) + }) + + setRelaySets(relaySets) setInitialed(true) } init() diff --git a/src/providers/RelaySetsProvider.tsx b/src/providers/RelaySetsProvider.tsx index 48718daf..491ed3d3 100644 --- a/src/providers/RelaySetsProvider.tsx +++ b/src/providers/RelaySetsProvider.tsx @@ -67,7 +67,7 @@ export function RelaySetsProvider({ children }: { children: React.ReactNode }) { return (