fix: interaction between both hot-reload engines (#4083)

* fix: interaction between both hot-reload engines

* correct comment
This commit is contained in:
Jonathan Kelley authored and GitHub committed 2025-05-07 11:35:25 -07:00
1 parent b2ec1d957b
commit d00636ca31
4 files changed
+601 -506

No files matched your search

Generated
+589 -500
View File
File diff suppressed because it is too large. Load diff
+3 -5
View File
@@ -393,11 +393,9 @@ impl AppServer {
} }
} }
// We decided to make the hotpatch engine drive *all* hotreloads, even if they are just RSX // todo - we need to distinguish between hotpatchable rebuilds and true full rebuilds.
// hot-reloads. This is a temporary measure to thoroughly test the hotpatch engine until // A full rebuild is required when the user modifies static initializers which we haven't wired up yet.
// we're comfortable with both co-existing. Keeping both would lead to two potential sources if needs_full_rebuild {
// of errors, and we want to avoid that for now.
if needs_full_rebuild || self.use_hotpatch_engine {
if self.use_hotpatch_engine { if self.use_hotpatch_engine {
self.client.patch_rebuild(files.to_vec()); self.client.patch_rebuild(files.to_vec());
if let Some(server) = self.server.as_mut() { if let Some(server) = self.server.as_mut() {
+3 -1
View File
@@ -1,5 +1,6 @@
use dioxus_core::internal::HotReloadedTemplate;
use dioxus_core::{ScopeId, VirtualDom}; use dioxus_core::{ScopeId, VirtualDom};
use dioxus_signals::{GlobalKey, Writable}; use dioxus_signals::{GlobalKey, Signal, Writable};
pub use dioxus_devtools_types::*; pub use dioxus_devtools_types::*;
pub use subsecond; pub use subsecond;
@@ -37,6 +38,7 @@ pub fn try_apply_changes(dom: &VirtualDom, msg: &HotReloadMsg) -> Result<(), Pat
if msg.for_build_id == Some(dioxus_cli_config::build_id()) { if msg.for_build_id == Some(dioxus_cli_config::build_id()) {
unsafe { subsecond::apply_patch(jump_table) }?; unsafe { subsecond::apply_patch(jump_table) }?;
dioxus_core::prelude::force_all_dirty(); dioxus_core::prelude::force_all_dirty();
ctx.clear::<Signal<Option<HotReloadedTemplate>>>();
} }
} }
+6
View File
@@ -268,6 +268,12 @@ impl GlobalLazyContext {
}) })
}) })
} }
#[doc(hidden)]
/// Clear all global signals of a given type.
pub fn clear<T: 'static>(&self) {
self.map.borrow_mut().retain(|_k, v| !v.is::<T>());
}
} }
/// Get the global context for signals /// Get the global context for signals