From dbc64afe4868a2376f2f3391744df04cbae75a82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Gonz=C3=A1lez?= <7822554+AlexTMjugador@users.noreply.github.com> Date: Mon, 6 Oct 2025 00:22:36 +0200 Subject: [PATCH] refactor(app): reduce tech debt by eliminating `wry` fork (#4500) --- Cargo.lock | 7 ++----- Cargo.toml | 4 +--- apps/app/Cargo.toml | 4 ++++ apps/app/src/api/ads.rs | 32 ++++++++++++++++++++++++-------- 4 files changed, 31 insertions(+), 16 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 596871698..877c3bb52 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9328,6 +9328,8 @@ dependencies = [ "url", "urlencoding", "uuid 1.18.1", + "webview2-com", + "windows-core 0.61.2", ] [[package]] @@ -11677,8 +11679,3 @@ dependencies = [ "wasm-bindgen", "web-sys", ] - -[[patch.unused]] -name = "wry" -version = "0.52.1" -source = "git+https://github.com/modrinth/wry?rev=f2ce0b0#f2ce0b0105d9d94f482c4f8ecffb4f3c3c325b40" diff --git a/Cargo.toml b/Cargo.toml index 400767bb4..5f0e7bb6b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -182,6 +182,7 @@ webp = { version = "0.3.0", default-features = false } whoami = "1.6.0" windows = "0.61.3" windows-core = "0.61.2" +webview2-com = "0.38.0" # Should be updated in lockstep with wry winreg = "0.55.0" woothee = "0.13.0" yaserde = "0.12.0" @@ -228,9 +229,6 @@ todo = "warn" unnested_or_patterns = "warn" wildcard_dependencies = "warn" -[patch.crates-io] -wry = { git = "https://github.com/modrinth/wry", rev = "f2ce0b0" } - # Optimize for speed and reduce size on release builds [profile.release] opt-level = "s" # Optimize for binary size diff --git a/apps/app/Cargo.toml b/apps/app/Cargo.toml index d15f4318b..aadf8d9f2 100644 --- a/apps/app/Cargo.toml +++ b/apps/app/Cargo.toml @@ -51,6 +51,10 @@ native-dialog.workspace = true [target.'cfg(target_os = "linux")'.dependencies] tauri-plugin-updater = { workspace = true, optional = true } +[target.'cfg(windows)'.dependencies] +webview2-com.workspace = true +windows-core.workspace = true + [features] # by default Tauri runs in production mode # when `tauri dev` runs it is executed with `cargo run --no-default-features` if `devPath` is an URL diff --git a/apps/app/src/api/ads.rs b/apps/app/src/api/ads.rs index fd498a56d..40d00ce76 100644 --- a/apps/app/src/api/ads.rs +++ b/apps/app/src/api/ads.rs @@ -79,7 +79,6 @@ pub async fn init_ads_window( override_shown: bool, ) -> crate::api::Result<()> { use tauri::WebviewUrl; - const LINK_SCRIPT: &str = include_str!("ads-init.js"); let state = app.state::>(); let mut state = state.write().await; @@ -102,25 +101,42 @@ pub async fn init_ads_window( webview.set_position(PhysicalPosition::new(-1000, -1000)); } } else if let Some(window) = app.get_window("main") { - let _ = window.add_child( + let webview = window.add_child( tauri::webview::WebviewBuilder::new( "ads-window", WebviewUrl::External( AD_LINK.parse().unwrap(), ), ) - .initialization_script(LINK_SCRIPT) - // .initialization_script_for_main_only(LINK_SCRIPT, false) - .user_agent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36") - .zoom_hotkeys_enabled(false) - .transparent(true), + .initialization_script_for_all_frames(include_str!("ads-init.js")) + .user_agent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36") + .zoom_hotkeys_enabled(false) + .transparent(true) + .on_new_window(|_, _| tauri::webview::NewWindowResponse::Deny), if state.shown { position } else { PhysicalPosition::new(-1000.0, -1000.0) }, size, - ); + )?; + + webview.with_webview(#[allow(unused_variables)] |webview2| { + #[cfg(windows)] + { + use webview2_com::Microsoft::Web::WebView2::Win32::ICoreWebView2_8; + use windows_core::Interface; + + let webview2_controller = webview2.controller(); + let Ok(webview2_8) = unsafe { webview2_controller.CoreWebView2() } + .and_then(|core_webview2| core_webview2.cast::()) + else { + return; + }; + + unsafe { webview2_8.SetIsMuted(true) }.ok(); + } + })?; } }