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());
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 = () => {