From 51a08d76f42ddc4cdda0dcb94323d7b4e816916d Mon Sep 17 00:00:00 2001 From: Anbraten Date: Tue, 25 Nov 2025 21:35:54 +0100 Subject: [PATCH] Extract interval into composition --- web/src/compositions/useInterval.ts | 18 ++++++++++++++++++ web/src/views/admin/AdminQueue.vue | 17 +++-------------- 2 files changed, 21 insertions(+), 14 deletions(-) create mode 100644 web/src/compositions/useInterval.ts diff --git a/web/src/compositions/useInterval.ts b/web/src/compositions/useInterval.ts new file mode 100644 index 000000000..1779f020d --- /dev/null +++ b/web/src/compositions/useInterval.ts @@ -0,0 +1,18 @@ +import { onBeforeUnmount, onMounted, ref } from 'vue'; + +export function useInterval(fn: () => void | Promise, ms: number): void { + const id = ref(); + + onMounted(async () => { + await fn(); // run once immediately + id.value = window.setInterval(() => { + void fn(); + }, ms); + }); + + onBeforeUnmount(() => { + if (id.value != null) { + window.clearInterval(id.value); + } + }); +} diff --git a/web/src/views/admin/AdminQueue.vue b/web/src/views/admin/AdminQueue.vue index b267d6f61..d8a8e181e 100644 --- a/web/src/views/admin/AdminQueue.vue +++ b/web/src/views/admin/AdminQueue.vue @@ -96,7 +96,7 @@