From ffeb03a3fc231f4609394bbb696c037134f7c2fa Mon Sep 17 00:00:00 2001 From: zoujing Date: Tue, 28 Jul 2026 10:09:43 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=8F=96=E5=8F=B7=E8=AF=B7=E6=B1=82?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages-base/queue/index.vue | 32 ++++++-------------------------- 1 file changed, 6 insertions(+), 26 deletions(-) diff --git a/src/pages-base/queue/index.vue b/src/pages-base/queue/index.vue index 5d58e53..dd2e908 100644 --- a/src/pages-base/queue/index.vue +++ b/src/pages-base/queue/index.vue @@ -310,7 +310,6 @@ const createStatusResource = () => { const tokenResource = reactive(createStatusResource()); -let projectsTimer = null; let statusTimer = null; let projectsRequestId = 0; let statusRequestId = 0; @@ -375,24 +374,21 @@ onLoad((options = {}) => { onShow(() => { if (viewMode.value === VIEW_HOME) { - ensureProjectsPolling(); + ensureProjectsLoaded(); return; } startStatusPolling(); }); onHide(() => { - stopProjectsPolling(); stopStatusPolling(); }); onUnload(() => { - stopProjectsPolling(); stopStatusPolling(); }); onBeforeUnmount(() => { - stopProjectsPolling(); stopStatusPolling(); }); @@ -427,9 +423,7 @@ const getErrorMessage = (error) => { const setActiveTab = (tab) => { activeTab.value = tab; if (tab === TAB_TAKE) { - ensureProjectsPolling(); - } else { - stopProjectsPolling(); + ensureProjectsLoaded(); } } @@ -446,28 +440,15 @@ const handleNavBack = () => { uni.navigateBack({ delta: 1 }); } -const ensureProjectsPolling = () => { - if (viewMode.value !== VIEW_HOME || activeTab.value !== TAB_TAKE) { - stopProjectsPolling(); - return; - } +const ensureProjectsLoaded = () => { + if (viewMode.value !== VIEW_HOME || activeTab.value !== TAB_TAKE) return; if (!projectsResource.projects.length && !projectsResource.loading) { loadProjects(); } - if (projectsTimer) return; - projectsTimer = setInterval(() => { - loadProjects({ silent: true }); - }, 60_000); -} - -const stopProjectsPolling = () => { - if (projectsTimer) { - clearInterval(projectsTimer); - projectsTimer = null; - } } const loadProjects = async ({ silent = false } = {}) => { + if (projectsResource.loading || projectsResource.refreshing) return; const requestId = ++projectsRequestId; projectsResource.loading = !silent && !projectsResource.projects.length; projectsResource.refreshing = silent && Boolean(projectsResource.projects.length); @@ -655,7 +636,6 @@ const openTokenStatus = (token) => { if (!token) return; currentToken.value = token; viewMode.value = VIEW_TOKEN; - stopProjectsPolling(); stopStatusPolling(); statusRequestId += 1; statusRequestGate.reset(); @@ -668,7 +648,7 @@ const backToHome = (tab = TAB_TAKE) => { viewMode.value = VIEW_HOME; activeTab.value = tab; currentToken.value = ""; - if (tab === TAB_TAKE) ensureProjectsPolling(); + if (tab === TAB_TAKE) ensureProjectsLoaded(); } const startStatusPolling = () => {