From adc72d685f368dad88091811e95076ef6895559b Mon Sep 17 00:00:00 2001 From: Tristan Edwards Date: Sun, 25 Dec 2022 18:54:08 +0100 Subject: [PATCH] Add "unsubscribe" event --- src/index.tsx | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/index.tsx b/src/index.tsx index f03ee22..6a1b0a0 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -110,10 +110,16 @@ export function useNostrEvents({ filter }: { filter: Filter }) { let onEventCallback: null | OnEventFunc = null - onConnect((relay: Relay) => { + let unsubscribe = () => { + return + } + + const subscribe = (relay: Relay) => { log(debug, "info", "⬆️ nostr: Sending event filter:", filter) const sub = relay.sub([filter], {}) + unsubscribe = sub.unsub + sub.on("event", (event: NostrEvent) => { log(debug, "info", "⬇️ nostr: Received event:", event) onEventCallback?.(event) @@ -121,6 +127,16 @@ export function useNostrEvents({ filter }: { filter: Filter }) { return [event, ..._events] }) }) + } + + useEffect(() => { + connectedRelays.forEach((relay) => { + subscribe(relay) + }) + }, [connectedRelays.length]) + + onConnect((relay: Relay) => { + subscribe(relay) }) const uniqEvents = events.length > 0 ? uniqBy(events, "id") : [] @@ -131,6 +147,7 @@ export function useNostrEvents({ filter }: { filter: Filter }) { events: sortedEvents, onConnect, connectedRelays, + unsubscribe, onEvent: (_onEventCallback: OnEventFunc) => { if (_onEventCallback) { onEventCallback = _onEventCallback