29 lines
549 B
JavaScript
29 lines
549 B
JavaScript
import { ref, onBeforeUnmount } from 'vue';
|
|
|
|
export const useLiveRefresh = (callback, interval = 60000) => {
|
|
const timeoutId = ref(null);
|
|
|
|
const startRefetching = () => {
|
|
timeoutId.value = setTimeout(async () => {
|
|
await callback();
|
|
startRefetching();
|
|
}, interval);
|
|
};
|
|
|
|
const stopRefetching = () => {
|
|
if (timeoutId.value) {
|
|
clearTimeout(timeoutId.value);
|
|
timeoutId.value = null;
|
|
}
|
|
};
|
|
|
|
onBeforeUnmount(() => {
|
|
stopRefetching();
|
|
});
|
|
|
|
return {
|
|
startRefetching,
|
|
stopRefetching,
|
|
};
|
|
};
|