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