From e4802d756666ccf9ec9d3f01c26a3f4607cefa77 Mon Sep 17 00:00:00 2001 From: Vladimir Borisov Date: Mon, 26 Jul 2021 13:12:54 +0300 Subject: [PATCH] URL decode dropped file --- Cargo.lock | 7 +++++++ Cargo.toml | 2 +- src/stremio_app/stremio_wevbiew/stremio_wevbiew.rs | 14 +++++++++----- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a020b96..56439e4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -509,6 +509,7 @@ dependencies = [ "serde", "serde_json", "structopt", + "urlencoding", "webview2", "webview2-sys", "winapi", @@ -601,6 +602,12 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" +[[package]] +name = "urlencoding" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68b90931029ab9b034b300b797048cf23723400aa757e8a2bfb9d748102f9821" + [[package]] name = "vec_map" version = "0.8.2" diff --git a/Cargo.toml b/Cargo.toml index deb1826..6594f91 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,6 +17,6 @@ serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" structopt = "0.3" open = "1" - +urlencoding = "2.1.0" [build-dependencies] embed-resource = "1.3" \ No newline at end of file diff --git a/src/stremio_app/stremio_wevbiew/stremio_wevbiew.rs b/src/stremio_app/stremio_wevbiew/stremio_wevbiew.rs index dc3d4e3..0392779 100644 --- a/src/stremio_app/stremio_wevbiew/stremio_wevbiew.rs +++ b/src/stremio_app/stremio_wevbiew/stremio_wevbiew.rs @@ -1,6 +1,7 @@ use native_windows_gui::{self as nwg, PartialUi}; use once_cell::unsync::OnceCell; use serde_json::json; +use std::borrow::Cow; use std::cell::RefCell; use std::collections::VecDeque; use std::mem; @@ -8,6 +9,7 @@ use std::rc::Rc; use std::sync::mpsc; use std::sync::{Arc, Mutex}; use std::thread; +use urlencoding::decode; use webview2::Controller; use winapi::shared::windef::HWND__; use winapi::um::winuser::*; @@ -104,13 +106,15 @@ impl PartialUi for WebView { Ok(()) }).ok(); webview.add_new_window_requested(move |_w, msg| { - let data = json!({ + if let Some(file) = msg.get_uri().ok().and_then(|str| {decode(&str.as_str()).ok().map(Cow::into_owned)}) { + let data = json!({ "object": "transport", "type": 1, - "args": ["dragdrop" ,[msg.get_uri().unwrap()]] - }); - tx_drag_drop.send(data.to_string()).ok(); - msg.put_handled(true).ok(); + "args": ["dragdrop" ,[file]] + }); + tx_drag_drop.send(data.to_string()).ok(); + msg.put_handled(true).ok(); + } Ok(()) }).ok(); WebView::resize_to_window_bounds_and_show(Some(&controller), Some(hwnd));