feat: Rate limit useSubscription
This commit is contained in:
parent
2292429f66
commit
02148fd97a
@ -1,4 +1,4 @@
|
|||||||
import { useEffect, useReducer } from "react";
|
import { useEffect, useMemo, useReducer, useState } from "react";
|
||||||
import { System } from "../nostr/System";
|
import { System } from "../nostr/System";
|
||||||
import { TaggedRawEvent } from "../nostr";
|
import { TaggedRawEvent } from "../nostr";
|
||||||
import { Subscriptions } from "../nostr/Subscriptions";
|
import { Subscriptions } from "../nostr/Subscriptions";
|
||||||
@ -32,6 +32,7 @@ function notesReducer(state: NoteStore, ev: TaggedRawEvent) {
|
|||||||
*/
|
*/
|
||||||
export default function useSubscription(sub: Subscriptions | null, options?: UseSubscriptionOptions) {
|
export default function useSubscription(sub: Subscriptions | null, options?: UseSubscriptionOptions) {
|
||||||
const [state, dispatch] = useReducer(notesReducer, <NoteStore>{ notes: [] });
|
const [state, dispatch] = useReducer(notesReducer, <NoteStore>{ notes: [] });
|
||||||
|
const [debounce, setDebounce] = useState<number>(0);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (sub) {
|
if (sub) {
|
||||||
@ -57,5 +58,12 @@ export default function useSubscription(sub: Subscriptions | null, options?: Use
|
|||||||
}
|
}
|
||||||
}, [sub]);
|
}, [sub]);
|
||||||
|
|
||||||
return state;
|
useEffect(() => {
|
||||||
|
let t = setTimeout(() => {
|
||||||
|
setDebounce(s => s += 1);
|
||||||
|
}, 100);
|
||||||
|
return () => clearTimeout(t);
|
||||||
|
}, [state]);
|
||||||
|
|
||||||
|
return useMemo(() => state, [debounce]);
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user