iceshrimp/packages/client/src/scripts/use-interval.ts
ThatOneCalculator 2aab2de38d refactor: 🎨 rome
2023-01-12 20:40:33 -08:00

29 lines
574 B
TypeScript

import { onMounted, onUnmounted } from "vue";
export function useInterval(
fn: () => void,
interval: number,
options: {
immediate: boolean;
afterMounted: boolean;
},
): void {
if (Number.isNaN(interval)) return;
let intervalId: number | null = null;
if (options.afterMounted) {
onMounted(() => {
if (options.immediate) fn();
intervalId = window.setInterval(fn, interval);
});
} else {
if (options.immediate) fn();
intervalId = window.setInterval(fn, interval);
}
onUnmounted(() => {
if (intervalId) window.clearInterval(intervalId);
});
}