Something went wrong. Try again.
Atproto cohost clone/tribute
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546import { createEffect, onCleanup } from "solid-js";
const random = (min: number, max: number) => Math.floor(Math.random() * (max - min)) + min;
export const useRandomInterval = ( callback: () => void, minDelay: number | null, maxDelay: number | null,) => { let timeoutId: number | undefined; let savedCallback = callback;
createEffect(() => { savedCallback = callback; });
createEffect(() => { if (typeof minDelay !== "number" || typeof maxDelay !== "number") return;
const handleTick = () => { const nextTickAt = random(minDelay, maxDelay); timeoutId = window.setTimeout(() => { savedCallback(); handleTick(); }, nextTickAt); };
handleTick();
onCleanup(() => { if (timeoutId !== undefined) { clearTimeout(timeoutId); } }); });
const cancel = () => { if (timeoutId !== undefined) { clearTimeout(timeoutId); } };
return cancel;};