feat: Rate limit useSubscription

This commit is contained in:
Kieran 2023-01-17 16:56:09 +00:00
parent 2292429f66
commit 02148fd97a
Signed by: Kieran
GPG Key ID: DE71CEB3925BE941

View File

@ -1,4 +1,4 @@
import { useEffect, useReducer } from "react";
import { useEffect, useMemo, useReducer, useState } from "react";
import { System } from "../nostr/System";
import { TaggedRawEvent } from "../nostr";
import { Subscriptions } from "../nostr/Subscriptions";
@ -32,6 +32,7 @@ function notesReducer(state: NoteStore, ev: TaggedRawEvent) {
*/
export default function useSubscription(sub: Subscriptions | null, options?: UseSubscriptionOptions) {
const [state, dispatch] = useReducer(notesReducer, <NoteStore>{ notes: [] });
const [debounce, setDebounce] = useState<number>(0);
useEffect(() => {
if (sub) {
@ -57,5 +58,12 @@ export default function useSubscription(sub: Subscriptions | null, options?: Use
}
}, [sub]);
return state;
useEffect(() => {
let t = setTimeout(() => {
setDebounce(s => s += 1);
}, 100);
return () => clearTimeout(t);
}, [state]);
return useMemo(() => state, [debounce]);
}