Răsfoiți Sursa

fix the liveview launch function

Evan Almloff 1 an în urmă
părinte
comite
a428c61457
2 a modificat fișierele cu 19 adăugiri și 17 ștergeri
  1. 2 1
      packages/liveview/Cargo.toml
  2. 17 16
      packages/liveview/src/launch.rs

+ 2 - 1
packages/liveview/Cargo.toml

@@ -41,8 +41,9 @@ tower = { workspace = true }
 dioxus = { workspace = true }
 
 [features]
-default = ["hot-reload"]
+default = ["hot-reload", "multi-thread"]
 axum = ["dep:axum"]
+multi-thread = ["tokio/rt-multi-thread"]
 hot-reload = ["dioxus-hot-reload"]
 
 [[example]]

+ 17 - 16
packages/liveview/src/launch.rs

@@ -9,22 +9,23 @@ pub fn launch(
     contexts: Vec<Box<dyn Fn() -> Box<dyn Any> + Send + Sync>>,
     platform_config: Config,
 ) {
-    tokio::runtime::Builder::new_multi_thread()
-        .enable_all()
-        .build()
-        .unwrap()
-        .block_on(async move {
-            platform_config
-                .with_virtual_dom(move || {
-                    let mut virtual_dom = VirtualDom::new(root);
+    #[cfg(feature = "multi-threaded")]
+    let mut builder = tokio::runtime::Builder::new_multi_thread();
+    #[cfg(not(feature = "multi-threaded"))]
+    let mut builder = tokio::runtime::Builder::new_current_thread();
 
-                    for context in &contexts {
-                        virtual_dom.insert_any_root_context(context());
-                    }
+    builder.enable_all().build().unwrap().block_on(async move {
+        platform_config
+            .with_virtual_dom(move || {
+                let mut virtual_dom = VirtualDom::new(root);
 
-                    virtual_dom
-                })
-                .launch()
-                .await;
-        });
+                for context in &contexts {
+                    virtual_dom.insert_any_root_context(context());
+                }
+
+                virtual_dom
+            })
+            .launch()
+            .await;
+    });
 }