From 5ddf764097469e85479e4d8746a9636cae3b854c Mon Sep 17 00:00:00 2001 From: "raymond.chen" Date: Tue, 14 Jun 2022 21:53:27 +0800 Subject: [PATCH] fix:clear interval fail when close autoRefresh --- src/store/modules/app.ts | 8 ++++++++ src/views/Settings.vue | 15 ++++++--------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/store/modules/app.ts b/src/store/modules/app.ts index e3121c0a..6f1be0a5 100644 --- a/src/store/modules/app.ts +++ b/src/store/modules/app.ts @@ -34,6 +34,7 @@ interface AppState { pageTitle: string; version: string; isMobile: boolean; + reloadTimer: Nullable; } export const appStore = defineStore({ @@ -53,8 +54,12 @@ export const appStore = defineStore({ pageTitle: "", version: "", isMobile: false, + reloadTimer: null, }), getters: { + _reloadTimer(): any { + return this.reloadTimer; + }, duration(): Duration { return { start: getLocalTime(this.utc, this.durationRow.start), @@ -173,6 +178,9 @@ export const appStore = defineStore({ this.version = res.data.data.version; return res.data; }, + setReloadTimer(timer: any): void { + this.reloadTimer = timer; + }, }, }); export function useAppStoreWithOut(): any { diff --git a/src/views/Settings.vue b/src/views/Settings.vue index 056c83e6..366631e2 100644 --- a/src/views/Settings.vue +++ b/src/views/Settings.vue @@ -78,9 +78,6 @@ import Selector from "@/components/Selector.vue"; const { t, locale } = useI18n(); const appStore = useAppStoreWithOut(); -const state = reactive<{ timer: ReturnType | null }>({ - timer: null, -}); const lang = ref(locale.value || "en"); const autoTime = ref(6); const auto = ref(appStore.autoRefresh || false); @@ -101,10 +98,10 @@ const handleAuto = () => { appStore.setAutoRefresh(auto.value); if (auto.value) { handleReload(); - state.timer = setInterval(handleReload, autoTime.value * 1000); + appStore.setReloadTimer(setInterval(handleReload, autoTime.value * 1000)); } else { - if (state.timer) { - clearInterval(state.timer); + if (appStore._reloadTimer) { + clearInterval(appStore._reloadTimer); } } }; @@ -112,12 +109,12 @@ const changeAutoTime = () => { if (autoTime.value < 1) { return; } - if (state.timer) { - clearInterval(state.timer); + if (appStore._reloadTimer) { + clearInterval(appStore._reloadTimer); } if (auto.value) { handleReload(); - state.timer = setInterval(handleReload, autoTime.value * 1000); + appStore.setReloadTimer(setInterval(handleReload, autoTime.value * 1000)); } }; const setLang = (): void => {