feat: 取号请求处理

This commit is contained in:
2026-07-28 10:09:43 +08:00
parent 6d629181ce
commit ffeb03a3fc

View File

@@ -310,7 +310,6 @@ const createStatusResource = () => {
const tokenResource = reactive(createStatusResource()); const tokenResource = reactive(createStatusResource());
let projectsTimer = null;
let statusTimer = null; let statusTimer = null;
let projectsRequestId = 0; let projectsRequestId = 0;
let statusRequestId = 0; let statusRequestId = 0;
@@ -375,24 +374,21 @@ onLoad((options = {}) => {
onShow(() => { onShow(() => {
if (viewMode.value === VIEW_HOME) { if (viewMode.value === VIEW_HOME) {
ensureProjectsPolling(); ensureProjectsLoaded();
return; return;
} }
startStatusPolling(); startStatusPolling();
}); });
onHide(() => { onHide(() => {
stopProjectsPolling();
stopStatusPolling(); stopStatusPolling();
}); });
onUnload(() => { onUnload(() => {
stopProjectsPolling();
stopStatusPolling(); stopStatusPolling();
}); });
onBeforeUnmount(() => { onBeforeUnmount(() => {
stopProjectsPolling();
stopStatusPolling(); stopStatusPolling();
}); });
@@ -427,9 +423,7 @@ const getErrorMessage = (error) => {
const setActiveTab = (tab) => { const setActiveTab = (tab) => {
activeTab.value = tab; activeTab.value = tab;
if (tab === TAB_TAKE) { if (tab === TAB_TAKE) {
ensureProjectsPolling(); ensureProjectsLoaded();
} else {
stopProjectsPolling();
} }
} }
@@ -446,28 +440,15 @@ const handleNavBack = () => {
uni.navigateBack({ delta: 1 }); uni.navigateBack({ delta: 1 });
} }
const ensureProjectsPolling = () => { const ensureProjectsLoaded = () => {
if (viewMode.value !== VIEW_HOME || activeTab.value !== TAB_TAKE) { if (viewMode.value !== VIEW_HOME || activeTab.value !== TAB_TAKE) return;
stopProjectsPolling();
return;
}
if (!projectsResource.projects.length && !projectsResource.loading) { if (!projectsResource.projects.length && !projectsResource.loading) {
loadProjects(); loadProjects();
} }
if (projectsTimer) return;
projectsTimer = setInterval(() => {
loadProjects({ silent: true });
}, 60_000);
}
const stopProjectsPolling = () => {
if (projectsTimer) {
clearInterval(projectsTimer);
projectsTimer = null;
}
} }
const loadProjects = async ({ silent = false } = {}) => { const loadProjects = async ({ silent = false } = {}) => {
if (projectsResource.loading || projectsResource.refreshing) return;
const requestId = ++projectsRequestId; const requestId = ++projectsRequestId;
projectsResource.loading = !silent && !projectsResource.projects.length; projectsResource.loading = !silent && !projectsResource.projects.length;
projectsResource.refreshing = silent && Boolean(projectsResource.projects.length); projectsResource.refreshing = silent && Boolean(projectsResource.projects.length);
@@ -655,7 +636,6 @@ const openTokenStatus = (token) => {
if (!token) return; if (!token) return;
currentToken.value = token; currentToken.value = token;
viewMode.value = VIEW_TOKEN; viewMode.value = VIEW_TOKEN;
stopProjectsPolling();
stopStatusPolling(); stopStatusPolling();
statusRequestId += 1; statusRequestId += 1;
statusRequestGate.reset(); statusRequestGate.reset();
@@ -668,7 +648,7 @@ const backToHome = (tab = TAB_TAKE) => {
viewMode.value = VIEW_HOME; viewMode.value = VIEW_HOME;
activeTab.value = tab; activeTab.value = tab;
currentToken.value = ""; currentToken.value = "";
if (tab === TAB_TAKE) ensureProjectsPolling(); if (tab === TAB_TAKE) ensureProjectsLoaded();
} }
const startStatusPolling = () => { const startStatusPolling = () => {