chore: split app to commons and web (squash commit)

This commit is contained in:
Andrew Bastin
2022-12-02 02:57:46 -05:00
parent fb827e3586
commit 3d004f2322
535 changed files with 1487 additions and 501 deletions

View File

@@ -0,0 +1,31 @@
import { onBeforeUnmount, Ref, shallowRef } from "vue"
export function usePolled<T>(
pollDurationMS: number,
pollFunc: (stopPolling: () => void) => T
): Ref<T> {
let polling = true
let handle: ReturnType<typeof setInterval> | undefined
const stopPolling = () => {
if (handle) {
clearInterval(handle)
handle = undefined
polling = false
}
}
const result = shallowRef(pollFunc(stopPolling))
if (polling) {
handle = setInterval(() => {
result.value = pollFunc(stopPolling)
}, pollDurationMS)
}
onBeforeUnmount(() => {
if (polling) stopPolling()
})
return result
}