diff --git a/app/util/index.js b/app/util/index.js new file mode 100644 index 0000000..42423ff --- /dev/null +++ b/app/util/index.js @@ -0,0 +1,9 @@ +import { onDestroy } from 'svelte'; + +export function onInterval(callback, milliseconds) { + const interval = setInterval(callback, milliseconds); + + onDestroy(() => { + clearInterval(interval); + }); +} diff --git a/app/views/Home.svelte b/app/views/Home.svelte index 66055b1..4b8f88e 100644 --- a/app/views/Home.svelte +++ b/app/views/Home.svelte @@ -2,6 +2,7 @@ import { onMount } from 'svelte'; import axios from 'axios' import moment from 'moment' + import { onInterval } from '../util' import { loggedIn } from '../UserState' import Alert from '../components/Alert' @@ -25,7 +26,10 @@ onMount(async () => { await update_stats() update_stats_label() - setInterval(update_stats_label, 1000) + + // we must use this wrapper to ensure setIntervals are cleaned + // up on view change + onInterval(update_stats_label, 1000) ready = true })