feat: 取号请求处理
This commit is contained in:
@@ -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 = () => {
|
||||
|
||||
Reference in New Issue
Block a user