From 067f20616577523a39da0b504c8756e98d18559b Mon Sep 17 00:00:00 2001 From: Tristan Edwards Date: Sun, 25 Dec 2022 14:20:32 +0100 Subject: [PATCH] Add "connectedRelays" param --- src/index.tsx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/index.tsx b/src/index.tsx index 8d81d47..e74183b 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -15,11 +15,13 @@ type OnConnectFunc = (relay: Relay) => void interface NostrContextType { isLoading: boolean debug?: boolean + connectedRelays: Relay[] onConnect: (_onConnectCallback?: OnConnectFunc) => void } const NostrContext = createContext({ isLoading: true, + connectedRelays: [], onConnect: () => null, }) @@ -32,6 +34,8 @@ const log = ( console[type](...args) } +// TODO: add "send" + export function NostrProvider({ children, relayUrls, @@ -42,6 +46,7 @@ export function NostrProvider({ debug?: boolean }) { const [isLoading, setIsLoading] = useState(true) + const [connectedRelays, setConnectedRelays] = useState([]) let onConnectCallback: null | OnConnectFunc = null @@ -54,6 +59,7 @@ export function NostrProvider({ log(debug, "info", `✅ nostr: Connected to ${relayUrl}`) setIsLoading(false) onConnectCallback?.(relay) + setConnectedRelays((prev) => uniqBy([...prev, relay], "url")) }) // Wait for this to be merged: https://github.com/fiatjaf/nostr-tools/pull/69 @@ -67,6 +73,7 @@ export function NostrProvider({ const value: NostrContextType = { debug, isLoading, + connectedRelays, onConnect: (_onConnectCallback?: OnConnectFunc) => { if (_onConnectCallback) { onConnectCallback = _onConnectCallback @@ -82,7 +89,7 @@ export function useNostr() { } export function useNostrEvents({ filter }: { filter: Filter }) { - const { isLoading, onConnect, debug } = useNostr() + const { isLoading, onConnect, debug, connectedRelays } = useNostr() const [events, setEvents] = useState([]) onConnect((relay: Relay) => { @@ -103,5 +110,6 @@ export function useNostrEvents({ filter }: { filter: Filter }) { isLoading, events: sortedEvents, onConnect, + connectedRelays, } }