|
|
|
@ -94,26 +94,29 @@ function RemoteRelaySets({ close }: { close?: () => void }) { |
|
|
|
limit: 50 |
|
|
|
limit: 50 |
|
|
|
} |
|
|
|
} |
|
|
|
) |
|
|
|
) |
|
|
|
setRelaySets( |
|
|
|
events.sort((a, b) => b.created_at - a.created_at) |
|
|
|
events |
|
|
|
|
|
|
|
.map((evt) => { |
|
|
|
|
|
|
|
const id = evt.tags.find(tagNameEquals('d'))?.[1] |
|
|
|
|
|
|
|
if (!id) return null |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const relayUrls = evt.tags |
|
|
|
const relaySetIds = new Set<string>() |
|
|
|
.filter(tagNameEquals('relay')) |
|
|
|
const relaySets: TRelaySet[] = [] |
|
|
|
.map((tag) => tag[1]) |
|
|
|
events.forEach((evt) => { |
|
|
|
.filter((url) => url && isWebsocketUrl(url)) |
|
|
|
const id = evt.tags.find(tagNameEquals('d'))?.[1] |
|
|
|
if (!relayUrls.length) return null |
|
|
|
if (!id || relaySetIds.has(id)) return |
|
|
|
|
|
|
|
|
|
|
|
let title = evt.tags.find(tagNameEquals('title'))?.[1] |
|
|
|
relaySetIds.add(id) |
|
|
|
if (!title) { |
|
|
|
const relayUrls = evt.tags |
|
|
|
title = relayUrls.length === 1 ? simplifyUrl(relayUrls[0]) : id |
|
|
|
.filter(tagNameEquals('relay')) |
|
|
|
} |
|
|
|
.map((tag) => tag[1]) |
|
|
|
return { id, name: title, relayUrls } |
|
|
|
.filter((url) => url && isWebsocketUrl(url)) |
|
|
|
}) |
|
|
|
if (!relayUrls.length) return |
|
|
|
.filter(Boolean) as TRelaySet[] |
|
|
|
|
|
|
|
) |
|
|
|
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) |
|
|
|
setInitialed(true) |
|
|
|
} |
|
|
|
} |
|
|
|
init() |
|
|
|
init() |
|
|
|
|