Files
Genarrative/apps/desktop-shell/src-tauri/src/host_bridge/mod.rs
T
kdletters dfeea9e93c 收口桌面窗口标题桥接边界
将 Tauri 窗口标题 HostBridge 处理收口到 title 模块

让桌面 dispatch 只委托窗口标题请求

同步桌面壳结构门禁、架构文档和共享记忆
2026-06-19 22:45:02 +08:00

44 lines
1.3 KiB
Rust

mod appearance;
pub(crate) mod capabilities;
mod badge;
mod clipboard;
mod dispatch;
pub(crate) mod files;
mod navigation;
mod network;
mod notifications;
pub(crate) mod protocol;
mod share;
mod title;
pub(crate) use protocol::HostBridgeReplayState;
pub(crate) use share::DesktopShareState;
use crate::host_bridge::dispatch::execute_host_bridge_request;
use crate::host_bridge::protocol::{
normalize_request_id, validate_request, HostBridgeReplayReservation, HostBridgeRequest,
HostBridgeResponse,
};
#[tauri::command]
pub(crate) async fn host_bridge_request(
app: tauri::AppHandle,
replay_state: tauri::State<'_, HostBridgeReplayState>,
mut request: HostBridgeRequest,
) -> Result<HostBridgeResponse, String> {
if let Some(response) = validate_request(&request) {
return Ok(response);
}
request.id = normalize_request_id(&request.id).unwrap_or(request.id);
let response = match replay_state.reserve(&request.id) {
HostBridgeReplayReservation::Wait(slot) => HostBridgeReplayState::wait_for_response(slot),
HostBridgeReplayReservation::Execute(slot) => {
let response = execute_host_bridge_request(app, request).await;
replay_state.complete(slot, response)
}
};
Ok(response)
}