From b6b428e5313b5dcf9d0ad4dcfbb57e1b939b0345 Mon Sep 17 00:00:00 2001 From: kdletters Date: Sat, 20 Jun 2026 13:01:59 +0800 Subject: [PATCH] =?UTF-8?q?=E9=94=81=E5=AE=9A=E6=A1=8C=E9=9D=A2=E7=BD=91?= =?UTF-8?q?=E7=BB=9C=E7=8A=B6=E6=80=81=E4=B8=8D=E5=8F=AF=E7=94=A8=E5=93=8D?= =?UTF-8?q?=E5=BA=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 桌面网络状态探测失败转为稳定 host_error 桌面网络状态单测覆盖不可用响应 code 和 message 桌面壳配置检查反查网络不可用边界 --- apps/desktop-shell/scripts/check-config.mjs | 4 +++- .../src-tauri/src/host_bridge/network.rs | 22 ++++++++++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/apps/desktop-shell/scripts/check-config.mjs b/apps/desktop-shell/scripts/check-config.mjs index 5c98a742e..8fa76db41 100644 --- a/apps/desktop-shell/scripts/check-config.mjs +++ b/apps/desktop-shell/scripts/check-config.mjs @@ -1920,8 +1920,10 @@ if ( for (const snippet of [ 'resolve_desktop_host_bridge_network_status', 'resolve_desktop_host_bridge_network_status_payload', + 'network_status_unavailable_response', 'spawn_blocking(resolve_desktop_network_status)', - 'failed(request.id.clone(), "host_error", error)', + '"network status unavailable"', + 'network_status_unavailable_response_is_stable', ]) { if (!desktopHostBridgeNetworkSource.includes(snippet)) { throw new Error(`desktop shell network module is missing ${snippet}`); diff --git a/apps/desktop-shell/src-tauri/src/host_bridge/network.rs b/apps/desktop-shell/src-tauri/src/host_bridge/network.rs index 196bdd2df..0eab269bc 100644 --- a/apps/desktop-shell/src-tauri/src/host_bridge/network.rs +++ b/apps/desktop-shell/src-tauri/src/host_bridge/network.rs @@ -13,6 +13,26 @@ pub(crate) async fn resolve_desktop_host_bridge_network_status( ) -> HostBridgeResponse { match resolve_desktop_host_bridge_network_status_payload().await { Ok(status) => ok(request.id.clone(), status), - Err(error) => failed(request.id.clone(), "host_error", error), + Err(_) => network_status_unavailable_response(request), + } +} + +fn network_status_unavailable_response(request: &HostBridgeRequest) -> HostBridgeResponse { + failed(request.id.clone(), "host_error", "network status unavailable") +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::host_bridge::protocol::request; + + #[test] + fn network_status_unavailable_response_is_stable() { + let response = network_status_unavailable_response(&request("network.status")); + + assert!(!response.ok); + let error = response.error.expect("network status error"); + assert_eq!(error.code, "host_error"); + assert_eq!(error.message, "network status unavailable"); } }