Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 4x 4x 9x 4x 4x | import { useCallback } from "react";
import { SubscriptionManager, useSubscription } from "../useSubscription";
import { usePollingIf } from "./usePollingIf";
/**
* This is a conditional polling hook that allows a subscription that gets called when the poll completes.
*
*/
export function useNotifiedPollingIf<T = unknown>(
predicate: () => boolean | PromiseLike<boolean>,
asyncFunction: () => T | PromiseLike<T>,
intervalMs = 60000,
immediate = true
): SubscriptionManager<T> {
const { subscribe, notify, useSubscribeEffect } = useSubscription<T>();
const notifyingAsyncFunction = useCallback(async () => {
notify(await asyncFunction());
}, [notify, asyncFunction]);
usePollingIf(predicate, notifyingAsyncFunction, { intervalMs, immediate });
return { subscribe, notify, useSubscribeEffect };
}
|