From b14aaca7b2ed9c5df91dc2a907a05924c23dd844 Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Fri, 20 Oct 2023 13:05:13 -0500 Subject: [PATCH] fix desktop renderer on windows --- packages/desktop/build.rs | 31 ++++++++++++++++++++++--------- packages/desktop/src/webview.rs | 2 +- 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/packages/desktop/build.rs b/packages/desktop/build.rs index 8be7761c0..b7989c595 100644 --- a/packages/desktop/build.rs +++ b/packages/desktop/build.rs @@ -2,6 +2,17 @@ use dioxus_interpreter_js::binary_protocol::SLEDGEHAMMER_JS; use std::io::Write; +const EDITS_PATH: &str = { + #[cfg(any(target_os = "android", target_os = "windows"))] + { + "http://dioxus.index.html/edits" + } + #[cfg(not(any(target_os = "android", target_os = "windows")))] + { + "dioxus://index.html/edits" + } +}; + fn main() { let prevent_file_upload = r#"// Prevent file inputs from opening the file dialog on click let inputs = document.querySelectorAll("input"); @@ -26,21 +37,23 @@ fn main() { } } }"#; - let polling_request = r#"// Poll for requests - window.interpreter.wait_for_request = () => { - fetch(new Request("dioxus://index.html/edits")) - .then(response => { + let polling_request = format!( + r#"// Poll for requests + window.interpreter.wait_for_request = () => {{ + fetch(new Request("{EDITS_PATH}")) + .then(response => {{ response.arrayBuffer() - .then(bytes => { + .then(bytes => {{ run_from_bytes(bytes); window.interpreter.wait_for_request(); - }); - }) - }"#; + }}); + }}) + }}"# + ); let mut interpreter = SLEDGEHAMMER_JS .replace("/*POST_HANDLE_EDITS*/", prevent_file_upload) .replace("export", "") - + polling_request; + + &polling_request; while let Some(import_start) = interpreter.find("import") { let import_end = interpreter[import_start..] .find(|c| c == ';' || c == '\n') diff --git a/packages/desktop/src/webview.rs b/packages/desktop/src/webview.rs index 44b5a3bf0..0992363e6 100644 --- a/packages/desktop/src/webview.rs +++ b/packages/desktop/src/webview.rs @@ -7,7 +7,7 @@ pub use wry::application as tao; use wry::application::window::Window; use wry::webview::{WebContext, WebView, WebViewBuilder}; -pub fn build( +pub(crate) fn build( cfg: &mut Config, event_loop: &EventLoopWindowTarget, proxy: EventLoopProxy,