From c2d540e64d3f5b51db11d68173b77b7dd588c6e0 Mon Sep 17 00:00:00 2001 From: omasakun <21339163+omasakun@users.noreply.github.com> Date: Tue, 4 Nov 2025 03:45:44 +0900 Subject: [PATCH] Fix dioxus-native to run without the net feature (#4899) * Fix dioxus-native to run without the net feature * Fix local assets to be available without net features * fix: compile out the inner_net_provider field entirely * feat: make dioxus-native run without html feature --- packages/native/src/assets.rs | 13 +++++++++++-- packages/native/src/lib.rs | 10 +--------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/packages/native/src/assets.rs b/packages/native/src/assets.rs index 46c98cd78..bd007f6cc 100644 --- a/packages/native/src/assets.rs +++ b/packages/native/src/assets.rs @@ -8,6 +8,7 @@ use winit::event_loop::EventLoopProxy; pub struct DioxusNativeNetProvider { callback: Arc + 'static>, + #[cfg(feature = "net")] inner_net_provider: Arc + 'static>, } impl DioxusNativeNetProvider { @@ -17,9 +18,13 @@ impl DioxusNativeNetProvider { pub fn new(proxy: EventLoopProxy) -> Self { let net_callback = BlitzShellNetCallback::shared(proxy); + + #[cfg(feature = "net")] let net_provider = blitz_net::Provider::shared(net_callback.clone()); + Self { callback: net_callback, + #[cfg(feature = "net")] inner_net_provider: net_provider, } } @@ -36,16 +41,20 @@ impl NetProvider for DioxusNativeNetProvider { match dioxus_asset_resolver::native::serve_asset(request.url.path()) { Ok(res) => { #[cfg(feature = "tracing")] - tracing::trace!("fetching asset from file system success {request:#?}"); + tracing::trace!("fetching asset from file system success {request:#?}"); handler.bytes(doc_id, res.into_body().into(), self.callback.clone()) } Err(_) => { #[cfg(feature = "tracing")] - tracing::warn!("fetching asset from file system error {request:#?}"); + tracing::warn!("fetching asset from file system error {request:#?}"); } } } else { + #[cfg(feature = "net")] self.inner_net_provider.fetch(doc_id, request, handler); + + #[cfg(all(not(feature = "net"), feature = "tracing"))] + tracing::warn!("net feature not enabled, cannot fetch {request:#?}"); } } } diff --git a/packages/native/src/lib.rs b/packages/native/src/lib.rs index 15acf6f31..e5d332e89 100644 --- a/packages/native/src/lib.rs +++ b/packages/native/src/lib.rs @@ -27,7 +27,6 @@ use blitz_shell::{create_default_event_loop, BlitzShellEvent, Config, WindowConf use dioxus_core::{ComponentFunction, Element, VirtualDom}; use link_handler::DioxusNativeNavigationProvider; use std::any::Any; -#[cfg(feature = "html")] use std::sync::Arc; use winit::window::WindowAttributes; @@ -117,14 +116,7 @@ pub fn launch_cfg_with_props( vdom.insert_any_root_context(context()); } - #[cfg(feature = "net")] - let net_provider = { - let proxy = event_loop.create_proxy(); - let net_provider = DioxusNativeNetProvider::shared(proxy); - Some(net_provider) - }; - #[cfg(not(feature = "net"))] - let net_provider = None; + let net_provider = Some(DioxusNativeNetProvider::shared(event_loop.create_proxy())); #[cfg(feature = "html")] let html_parser_provider = Some(Arc::new(blitz_html::HtmlProvider) as _);