From c86cbd69dae18abd114de8a390353179b99b565b Mon Sep 17 00:00:00 2001 From: Jonathan Kelley Date: Mon, 19 Dec 2022 14:53:23 -0800 Subject: [PATCH] feat: move interpreter code into desktop --- packages/desktop/src/lib.rs | 58 +++++++++++++++++--------------- packages/desktop/src/main.js | 7 ---- packages/desktop/src/protocol.rs | 16 ++++++--- 3 files changed, 42 insertions(+), 39 deletions(-) delete mode 100644 packages/desktop/src/main.js diff --git a/packages/desktop/src/lib.rs b/packages/desktop/src/lib.rs index a37ad88f8..0080e671b 100644 --- a/packages/desktop/src/lib.rs +++ b/packages/desktop/src/lib.rs @@ -184,36 +184,40 @@ fn build_webview( .with_url("dioxus://index.html/") .unwrap() .with_ipc_handler(move |_window: &Window, payload: String| { - parse_ipc_message(&payload) - .map(|message| match message.method() { - "eval_result" => { - let result = message.params(); - eval_sender.send(result).unwrap(); - } - "user_event" => { - _ = event_tx.unbounded_send(message.params()); - } - "initialize" => { - is_ready.store(true, std::sync::atomic::Ordering::Relaxed); - let _ = proxy.send_event(UserWindowEvent::EditsReady); - } - "browser_open" => { - let data = message.params(); - log::trace!("Open browser: {:?}", data); - if let Some(temp) = data.as_object() { - if temp.contains_key("href") { - let url = temp.get("href").unwrap().as_str().unwrap(); - if let Err(e) = webbrowser::open(url) { - log::error!("Open Browser error: {:?}", e); - } + let message = match parse_ipc_message(&payload) { + Some(message) => message, + None => { + log::error!("Failed to parse IPC message: {}", payload); + return; + } + }; + + match message.method() { + "eval_result" => { + let result = message.params(); + eval_sender.send(result).unwrap(); + } + "user_event" => { + _ = event_tx.unbounded_send(message.params()); + } + "initialize" => { + is_ready.store(true, std::sync::atomic::Ordering::Relaxed); + let _ = proxy.send_event(UserWindowEvent::EditsReady); + } + "browser_open" => { + let data = message.params(); + log::trace!("Open browser: {:?}", data); + if let Some(temp) = data.as_object() { + if temp.contains_key("href") { + let url = temp.get("href").unwrap().as_str().unwrap(); + if let Err(e) = webbrowser::open(url) { + log::error!("Open Browser error: {:?}", e); } } } - _ => (), - }) - .unwrap_or_else(|| { - log::warn!("invalid IPC message received"); - }); + } + _ => (), + } }) .with_custom_protocol(String::from("dioxus"), move |r| { protocol::desktop_handler( diff --git a/packages/desktop/src/main.js b/packages/desktop/src/main.js deleted file mode 100644 index 50a3bdc34..000000000 --- a/packages/desktop/src/main.js +++ /dev/null @@ -1,7 +0,0 @@ -export function main(rootname = "main") { - let root = window.document.getElementById(rootname); - if (root != null) { - window.interpreter = new Interpreter(root); - window.ipc.postMessage(serializeIpcMessage("initialize")); - } -} diff --git a/packages/desktop/src/protocol.rs b/packages/desktop/src/protocol.rs index 625e0abbc..8835078f2 100644 --- a/packages/desktop/src/protocol.rs +++ b/packages/desktop/src/protocol.rs @@ -1,3 +1,4 @@ +use dioxus_interpreter_js::INTERPRETER_JS; use std::path::{Path, PathBuf}; use wry::{ http::{status::StatusCode, Request, Response}, @@ -6,13 +7,18 @@ use wry::{ fn module_loader(root_name: &str) -> String { format!( - " + r#" -", +"#, root_name ) }