feat: pull relay sets button

This commit is contained in:
codytseng
2025-04-06 16:21:44 +08:00
parent 27ae980f42
commit 864d8c617f
18 changed files with 273 additions and 9 deletions

View File

@@ -16,7 +16,8 @@ type TFavoriteRelaysContext = {
addFavoriteRelays: (relayUrls: string[]) => Promise<void>
deleteFavoriteRelays: (relayUrls: string[]) => Promise<void>
relaySets: TRelaySet[]
addRelaySet: (relaySetName: string, relayUrls?: string[]) => Promise<void>
createRelaySet: (relaySetName: string, relayUrls?: string[]) => Promise<void>
addRelaySets: (newRelaySetEvents: Event[]) => Promise<void>
deleteRelaySet: (id: string) => Promise<void>
updateRelaySet: (newSet: TRelaySet) => Promise<void>
}
@@ -149,7 +150,7 @@ export function FavoriteRelaysProvider({ children }: { children: React.ReactNode
updateFavoriteRelaysEvent(newFavoriteRelaysEvent)
}
const addRelaySet = async (relaySetName: string, relayUrls: string[] = []) => {
const createRelaySet = async (relaySetName: string, relayUrls: string[] = []) => {
const normalizedUrls = relayUrls
.map((url) => normalizeUrl(url))
.filter((url) => isWebsocketUrl(url))
@@ -170,6 +171,15 @@ export function FavoriteRelaysProvider({ children }: { children: React.ReactNode
updateFavoriteRelaysEvent(newFavoriteRelaysEvent)
}
const addRelaySets = async (newRelaySetEvents: Event[]) => {
const favoriteRelaysDraftEvent = createFavoriteRelaysDraftEvent(favoriteRelays, [
...relaySetEvents,
...newRelaySetEvents
])
const newFavoriteRelaysEvent = await publish(favoriteRelaysDraftEvent)
updateFavoriteRelaysEvent(newFavoriteRelaysEvent)
}
const deleteRelaySet = async (id: string) => {
const newRelaySetEvents = relaySetEvents.filter((event) => {
return getReplaceableEventIdentifier(event) !== id
@@ -203,7 +213,8 @@ export function FavoriteRelaysProvider({ children }: { children: React.ReactNode
addFavoriteRelays,
deleteFavoriteRelays,
relaySets,
addRelaySet,
createRelaySet,
addRelaySets,
deleteRelaySet,
updateRelaySet
}}