From 69d7098d0e1a1847f0eaddc053a1154b1bd52418 Mon Sep 17 00:00:00 2001 From: Andrew Scott Date: Wed, 10 Jul 2024 12:50:04 -0700 Subject: [PATCH] feat (desktop): upgrade from wry 37 to 41 (#2618) --- Cargo.lock | 95 ++++++++++++++----------- packages/desktop/Cargo.toml | 4 +- packages/desktop/src/app.rs | 4 +- packages/desktop/src/desktop_context.rs | 4 +- packages/desktop/src/file_upload.rs | 8 +-- packages/desktop/src/webview.rs | 7 +- 6 files changed, 69 insertions(+), 53 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1d47e6a42..93fb68dfc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2999,6 +2999,12 @@ version = "0.15.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" +[[package]] +name = "dpi" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f25c0e292a7ca6d6498557ff1df68f32c99850012b6ea401cf8daf771f22ff53" + [[package]] name = "dtoa" version = "1.0.9" @@ -10586,16 +10592,16 @@ dependencies = [ [[package]] name = "webview2-com" -version = "0.28.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0ae9c7e420783826cf769d2c06ac9ba462f450eca5893bb8c6c6529a4e5dd33" +checksum = "6516cfa64c6b3212686080eeec378e662c2af54bb2a5b2a22749673f5cb2226f" dependencies = [ "webview2-com-macros", "webview2-com-sys", - "windows 0.52.0", - "windows-core 0.52.0", - "windows-implement 0.52.0", - "windows-interface 0.52.0", + "windows 0.57.0", + "windows-core 0.57.0", + "windows-implement 0.57.0", + "windows-interface 0.57.0", ] [[package]] @@ -10611,13 +10617,13 @@ dependencies = [ [[package]] name = "webview2-com-sys" -version = "0.28.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6ad85fceee6c42fa3d61239eba5a11401bf38407a849ed5ea1b407df08cca72" +checksum = "c76d5b77320ff155660be1df3e6588bc85c75f1a9feef938cc4dc4dd60d1d7cf" dependencies = [ "thiserror", - "windows 0.52.0", - "windows-core 0.52.0", + "windows 0.57.0", + "windows-core 0.57.0", ] [[package]] @@ -10685,18 +10691,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -[[package]] -name = "windows" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" -dependencies = [ - "windows-core 0.52.0", - "windows-implement 0.52.0", - "windows-interface 0.52.0", - "windows-targets 0.52.5", -] - [[package]] name = "windows" version = "0.54.0" @@ -10709,6 +10703,16 @@ dependencies = [ "windows-targets 0.52.5", ] +[[package]] +name = "windows" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143" +dependencies = [ + "windows-core 0.57.0", + "windows-targets 0.52.5", +] + [[package]] name = "windows-core" version = "0.52.0" @@ -10729,14 +10733,15 @@ dependencies = [ ] [[package]] -name = "windows-implement" -version = "0.52.0" +name = "windows-core" +version = "0.57.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12168c33176773b86799be25e2a2ba07c7aab9968b37541f1094dbd7a60c8946" +checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.68", + "windows-implement 0.57.0", + "windows-interface 0.57.0", + "windows-result", + "windows-targets 0.52.5", ] [[package]] @@ -10751,10 +10756,10 @@ dependencies = [ ] [[package]] -name = "windows-interface" -version = "0.52.0" +name = "windows-implement" +version = "0.57.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d8dc32e0095a7eeccebd0e3f09e9509365ecb3fc6ac4d6f5f14a3f6392942d1" +checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" dependencies = [ "proc-macro2", "quote", @@ -10772,6 +10777,17 @@ dependencies = [ "syn 2.0.68", ] +[[package]] +name = "windows-interface" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.68", +] + [[package]] name = "windows-result" version = "0.1.2" @@ -11035,26 +11051,25 @@ dependencies = [ [[package]] name = "wry" -version = "0.37.0" +version = "0.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b717040ba9771fd88eb428c6ea6b555f8e734ff8534f02c13e8f10d97f5935e" +checksum = "68b00c945786b02d7805d09a969fa36d0eee4e0bd4fb3ec2a79d2bf45a1b44cd" dependencies = [ - "base64 0.21.7", + "base64 0.22.1", "block", - "cfg_aliases 0.1.1", "cocoa", "core-graphics", "crossbeam-channel", + "dpi", "dunce", "gdkx11", "gtk", "html5ever", - "http 0.2.12", + "http 1.1.0", "javascriptcore-rs", "jni", "kuchikiki", "libc", - "log", "ndk", "ndk-context", "ndk-sys", @@ -11063,8 +11078,6 @@ dependencies = [ "once_cell", "percent-encoding", "raw-window-handle 0.6.2", - "serde", - "serde_json", "sha2", "soup3", "tao-macros", @@ -11072,8 +11085,8 @@ dependencies = [ "webkit2gtk", "webkit2gtk-sys", "webview2-com", - "windows 0.52.0", - "windows-implement 0.52.0", + "windows 0.57.0", + "windows-core 0.57.0", "windows-version", "x11-dl", ] diff --git a/packages/desktop/Cargo.toml b/packages/desktop/Cargo.toml index e62189634..bd9f3a809 100644 --- a/packages/desktop/Cargo.toml +++ b/packages/desktop/Cargo.toml @@ -25,10 +25,10 @@ serde = "1.0.136" serde_json = "1.0.79" thiserror = { workspace = true } tracing = { workspace = true } -wry = { version = "0.37.0", default-features = false, features = [ +wry = { version = "0.41.0", default-features = false, features = [ "os-webview", "protocol", - "file-drop", + "drag-drop", ] } futures-channel = { workspace = true } tokio = { workspace = true, features = [ diff --git a/packages/desktop/src/app.rs b/packages/desktop/src/app.rs index 56bb7efda..e87e4e585 100644 --- a/packages/desktop/src/app.rs +++ b/packages/desktop/src/app.rs @@ -300,8 +300,8 @@ impl App { if drag.files().is_some() { let file_event = recent_file.current().unwrap(); let paths = match file_event { - wry::FileDropEvent::Hovered { paths, .. } => paths, - wry::FileDropEvent::Dropped { paths, .. } => paths, + wry::DragDropEvent::Enter { paths, .. } => paths, + wry::DragDropEvent::Drop { paths, .. } => paths, _ => vec![], }; Rc::new(PlatformEventData::new(Box::new(DesktopFileDragEvent { diff --git a/packages/desktop/src/desktop_context.rs b/packages/desktop/src/desktop_context.rs index a32436f0e..ca540ddaf 100644 --- a/packages/desktop/src/desktop_context.rs +++ b/packages/desktop/src/desktop_context.rs @@ -190,7 +190,9 @@ impl DesktopService { /// Set the zoom level of the webview pub fn set_zoom_level(&self, level: f64) { - self.webview.zoom(level); + if let Err(e) = self.webview.zoom(level) { + tracing::warn!("Set webview zoom failed: {e}"); + } } /// opens DevTool window diff --git a/packages/desktop/src/file_upload.rs b/packages/desktop/src/file_upload.rs index b9e76b668..dba431ef4 100644 --- a/packages/desktop/src/file_upload.rs +++ b/packages/desktop/src/file_upload.rs @@ -19,7 +19,7 @@ use std::{ str::FromStr, sync::Arc, }; -use wry::FileDropEvent; +use wry::DragDropEvent; #[derive(Debug, Deserialize)] pub(crate) struct FileDialogRequest { @@ -162,14 +162,14 @@ impl HasFormData for DesktopFileUploadForm { #[derive(Default, Clone)] pub struct NativeFileHover { - event: Rc>>, + event: Rc>>, } impl NativeFileHover { - pub fn set(&self, event: FileDropEvent) { + pub fn set(&self, event: DragDropEvent) { self.event.borrow_mut().replace(event); } - pub fn current(&self) -> Option { + pub fn current(&self) -> Option { self.event.borrow_mut().clone() } } diff --git a/packages/desktop/src/webview.rs b/packages/desktop/src/webview.rs index f7342e71e..c007e194f 100644 --- a/packages/desktop/src/webview.rs +++ b/packages/desktop/src/webview.rs @@ -106,9 +106,10 @@ impl WebviewInstance { } }; - let ipc_handler = move |payload: String| { + let ipc_handler = move |payload: wry::http::Request| { // defer the event to the main thread - if let Ok(msg) = serde_json::from_str(&payload) { + let body = payload.into_body(); + if let Ok(msg) = serde_json::from_str(&body) { _ = proxy_.send_event(UserWindowEvent::Ipc { id: window_id, msg }); } }; @@ -159,7 +160,7 @@ impl WebviewInstance { }) // prevent all navigations .with_asynchronous_custom_protocol(String::from("dioxus"), request_handler) .with_web_context(&mut web_context) - .with_file_drop_handler(file_drop_handler); + .with_drag_drop_handler(file_drop_handler); if let Some(color) = cfg.background_color { webview = webview.with_background_color(color);