From 7fa442fb28a2b9156690ff147206275163e7aec8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Gonz=C3=A1lez?= <7822554+AlexTMjugador@users.noreply.github.com> Date: Wed, 15 Oct 2025 12:24:32 +0200 Subject: [PATCH] Reapply "refactor(app): reduce tech debt by eliminating `wry` fork" (#4555) * Reapply "refactor(app): reduce tech debt by eliminating `wry` fork (#4500)" This reverts commit 2535156dacc1cbd2344a7ad278cc7ed22bf72a4e. * test: temporarily replace ad link by something with sound * Revert "test: temporarily replace ad link by something with sound" This reverts commit 74bb7eecb7cc7b17ccfd6b2e20c24eeec38ac363. * Reapply "test: temporarily replace ad link by something with sound" This reverts commit f1b0e9f2c4a30f789099048e98ffa91ff376f571. * test: also disable ads init muting script for good measure * Revert "test: also disable ads init muting script for good measure" This reverts commit 4ac7a81e1780f13c976d033c420bfe1d5db9c298. * Revert "Reapply "test: temporarily replace ad link by something with sound"" This reverts commit c5f1b9f242f5c7f56b40f21b586e8b484c7eb3c5. --- Cargo.lock | 7 ++----- Cargo.toml | 3 --- apps/app/Cargo.toml | 4 ++++ apps/app/src/api/ads.rs | 32 ++++++++++++++++++++++++-------- 4 files changed, 30 insertions(+), 16 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8a6cef831..d6068768c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9349,6 +9349,8 @@ dependencies = [ "url", "urlencoding", "uuid 1.18.1", + "webview2-com", + "windows-core 0.61.2", ] [[package]] @@ -11698,8 +11700,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 31f4c20e2..8d42c3306 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -240,9 +240,6 @@ wildcard_dependencies = "warn" [profile.dev.package.sqlx-macros] opt-level = 3 -[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 9631db712..4a07f2a1c 100644 --- a/apps/app/Cargo.toml +++ b/apps/app/Cargo.toml @@ -49,6 +49,10 @@ tauri-build = { workspace = true, features = ["codegen"] } [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(); + } + })?; } }