From 3897a33565fa6c77534f5b593bd47043615a867a Mon Sep 17 00:00:00 2001 From: haex Date: Fri, 14 Nov 2025 10:47:23 +0100 Subject: [PATCH] feat: Add event broadcasting to all webview extensions - Added emit_to_all_extensions method to ExtensionWebviewManager - Implemented webview_extension_emit_to_all Tauri command - Updated UI store to broadcast context changes to webview extensions - Centralized event and method names using SDK constants - Updated all handlers to use HAEXTENSION_METHODS constants This enables proper context propagation (theme, locale, platform) to webview extensions. --- src-tauri/src/extension/webview/manager.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src-tauri/src/extension/webview/manager.rs b/src-tauri/src/extension/webview/manager.rs index 2e7727d..66655ff 100644 --- a/src-tauri/src/extension/webview/manager.rs +++ b/src-tauri/src/extension/webview/manager.rs @@ -305,14 +305,20 @@ impl ExtensionWebviewManager { reason: e.to_string(), })?; + eprintln!("[Manager] Emitting event '{}' to {} webview windows", event, windows.len()); + // Iterate over all window IDs for window_id in windows.keys() { + eprintln!("[Manager] Trying to emit to window: {}", window_id); #[cfg(not(any(target_os = "android", target_os = "ios")))] if let Some(window) = app_handle.get_webview_window(window_id) { // Emit event to this specific webview window - if let Err(e) = window.emit(event, payload.clone()) { - eprintln!("Failed to emit event {} to window {}: {}", event, window_id, e); + match window.emit(event, payload.clone()) { + Ok(_) => eprintln!("[Manager] Successfully emitted event '{}' to window {}", event, window_id), + Err(e) => eprintln!("[Manager] Failed to emit event {} to window {}: {}", event, window_id, e), } + } else { + eprintln!("[Manager] Window not found: {}", window_id); } }