From e9b28cedd8b3ec42e735ff668e34aef1170e5753 Mon Sep 17 00:00:00 2001 From: xiaosi <2652281683@qq.com> Date: Thu, 3 Sep 2026 15:34:11 +0800 Subject: [PATCH] fix: silence device poll toasts and unblock detail id switch --- src/stores/modules/devicesStore.js | 12 +++++++----- src/views/DeviceDetailView/DeviceDetailView.vue | 4 +++- src/views/MonitorView/MonitorView.vue | 2 +- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/stores/modules/devicesStore.js b/src/stores/modules/devicesStore.js index 357f425..29d4ee4 100644 --- a/src/stores/modules/devicesStore.js +++ b/src/stores/modules/devicesStore.js @@ -173,17 +173,19 @@ export const useDeviceStore = defineStore('devices', () => { return request.post(urls.DOCK_COMMAND(dock.id), { type, params, droneSn: rec.droneSn }) } - async function load() { + async function load(options = {}) { + const silent = Boolean(options.silent) + const reqOpts = silent ? { skipErrorToast: true } : {} const [dockPage, dronePage] = await Promise.all([ - request.get(urls.DOCKS, { params: { pageNum: 1, pageSize: 100 } }), - request.get(urls.DRONES, { params: { pageNum: 1, pageSize: 100 } }) + request.get(urls.DOCKS, { params: { pageNum: 1, pageSize: 100 }, ...reqOpts }), + request.get(urls.DRONES, { params: { pageNum: 1, pageSize: 100 }, ...reqOpts }) ]) const dockList = dockPage?.records || [] const droneList = dronePage?.records || [] const [dockDetails, droneDetails] = await Promise.all([ - Promise.all(dockList.map((d) => request.get(urls.DOCK(d.id)).then((r) => r || {}).catch(() => ({})))), - Promise.all(droneList.map((d) => request.get(urls.DRONE(d.id)).then((r) => r || {}).catch(() => ({})))) + Promise.all(dockList.map((d) => request.get(urls.DOCK(d.id), reqOpts).then((r) => r || {}).catch(() => ({})))), + Promise.all(droneList.map((d) => request.get(urls.DRONE(d.id), reqOpts).then((r) => r || {}).catch(() => ({})))) ]) const coords = dockList .map((d) => ({ longitude: coordinate(d.longitude, -180, 180), latitude: coordinate(d.latitude, -90, 90) })) diff --git a/src/views/DeviceDetailView/DeviceDetailView.vue b/src/views/DeviceDetailView/DeviceDetailView.vue index 00c627e..3f64aba 100644 --- a/src/views/DeviceDetailView/DeviceDetailView.vue +++ b/src/views/DeviceDetailView/DeviceDetailView.vue @@ -365,7 +365,7 @@ async function pollCurrentDetail() { if (!id || !rec) return const gen = detailPollGen const url = rec.kind === 'drone' ? urls.DRONE(id) : urls.DOCK(id) - detailPollInflight = request.get(url) + detailPollInflight = request.get(url, { skipErrorToast: true }) try { const detail = await detailPollInflight if (detailDisposed || gen !== detailPollGen) return @@ -394,6 +394,7 @@ function stopDetailPolling() { function restartDetailPolling() { detailPollGen += 1 + detailPollInflight = null // allow immediate new-id fetch; old response dropped by gen stopDetailPolling() void pollCurrentDetail() startDetailPolling() @@ -405,6 +406,7 @@ function onDetailVisibility() { stopDetailPolling() return } + detailPollInflight = null void pollCurrentDetail() startDetailPolling() } diff --git a/src/views/MonitorView/MonitorView.vue b/src/views/MonitorView/MonitorView.vue index 42e2e2e..960e8ae 100644 --- a/src/views/MonitorView/MonitorView.vue +++ b/src/views/MonitorView/MonitorView.vue @@ -162,7 +162,7 @@ async function pollDevices({ toastOnSuccess = false } = {}) { if (monitorDisposed) return if (devicePollInflight) return const gen = devicePollGen - devicePollInflight = devices.load() + devicePollInflight = toastOnSuccess ? devices.load() : devices.load({ silent: true }) try { await devicePollInflight if (monitorDisposed || gen !== devicePollGen) return