From 18a7a1f9c40eb3b1ac263cbd21b1daa6da9c7093 Mon Sep 17 00:00:00 2001 From: Jonathan Kelley Date: Wed, 24 Feb 2021 10:12:26 -0500 Subject: [PATCH] Chore: comments --- packages/core/src/virtual_dom.rs | 4 +++- packages/web/src/lib.rs | 18 ++++++++++-------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/packages/core/src/virtual_dom.rs b/packages/core/src/virtual_dom.rs index 81adf080c..ccfeb4b70 100644 --- a/packages/core/src/virtual_dom.rs +++ b/packages/core/src/virtual_dom.rs @@ -78,7 +78,9 @@ impl VirtualDom { } } - //// Performs a *full* rebuild of the virtual dom, returning every edit required to generate the actual dom + /// Performs a *full* rebuild of the virtual dom, returning every edit required to generate the actual dom. + /// + /// pub fn rebuild(&mut self) -> Result> { // Reset and then build a new diff machine // The previous edit list cannot be around while &mut is held diff --git a/packages/web/src/lib.rs b/packages/web/src/lib.rs index 1375e008e..bb01d91ce 100644 --- a/packages/web/src/lib.rs +++ b/packages/web/src/lib.rs @@ -56,8 +56,8 @@ impl WebsysRenderer { } /// Create a new text renderer from an existing Virtual DOM. - /// This will progress the existing VDom's events to completion. pub fn from_vdom(dom: VirtualDom) -> Self { + // todo: initialize the event registry properly Self { internal_dom: dom, _event_map: FxHashMap::default(), @@ -67,15 +67,17 @@ impl WebsysRenderer { pub async fn run(&mut self) -> dioxus_core::error::Result<()> { let (sender, mut receiver) = mpsc::unbounded::(); - let body = prepare_websys_dom(); - let mut patch_machine = interpreter::PatchMachine::new(body.clone()); - let root_node = body.first_child().unwrap(); + let body_element = prepare_websys_dom(); + let mut patch_machine = interpreter::PatchMachine::new(body_element.clone()); + let root_node = body_element.first_child().unwrap(); patch_machine.stack.push(root_node); + // todo: initialize the event registry properly on the root element + self.internal_dom .rebuild()? - .into_iter() - .for_each(|edit| patch_machine.handle_edit(&edit)); + .iter() + .for_each(|edit| patch_machine.handle_edit(edit)); // Event loop waits for the receiver to finish up // TODO! Connect the sender to the virtual dom's suspense system @@ -83,9 +85,9 @@ impl WebsysRenderer { while let Some(event) = receiver.next().await { self.internal_dom .progress_with_event(event)? - .into_iter() + .iter() .for_each(|edit| { - patch_machine.handle_edit(&edit); + patch_machine.handle_edit(edit); }); }