diff --git a/packages/core/src/global_context.rs b/packages/core/src/global_context.rs index 05002281c..9b3c6d61c 100644 --- a/packages/core/src/global_context.rs +++ b/packages/core/src/global_context.rs @@ -38,8 +38,8 @@ pub fn has_context() -> Option { } /// Provide context to the current scope -pub fn provide_context(value: T) -> Option { - with_current_scope(|cx| cx.provide_context(value)) +pub fn provide_context(value: T) -> T { + with_current_scope(|cx| cx.provide_context(value)).expect("to be in a dioxus runtime") } /// Provide a context to the root scope diff --git a/packages/core/src/scope_context.rs b/packages/core/src/scope_context.rs index bd0700ec7..88421549d 100644 --- a/packages/core/src/scope_context.rs +++ b/packages/core/src/scope_context.rs @@ -338,8 +338,8 @@ impl ScopeId { } /// Provide context to the current scope - pub fn provide_context(self, value: T) -> Option { - with_scope(self, |cx| cx.provide_context(value)) + pub fn provide_context(self, value: T) -> T { + with_scope(self, |cx| cx.provide_context(value)).expect("to be in a dioxus runtime") } /// Suspends the current component diff --git a/packages/signals/src/rt.rs b/packages/signals/src/rt.rs index 58f15a2fd..18e8b4626 100644 --- a/packages/signals/src/rt.rs +++ b/packages/signals/src/rt.rs @@ -33,7 +33,7 @@ fn current_owner() -> Rc { Some(rt) => rt, None => { let owner = Rc::new(current_store().owner()); - provide_context(owner).expect("in a virtual dom") + provide_context(owner) } }, } @@ -44,7 +44,7 @@ fn owner_in_scope(scope: ScopeId) -> Rc { Some(rt) => rt, None => { let owner = Rc::new(current_store().owner()); - scope.provide_context(owner).expect("in a virtual dom") + scope.provide_context(owner) } } } diff --git a/packages/signals/src/signal.rs b/packages/signals/src/signal.rs index 1f7426ff5..d92521e23 100644 --- a/packages/signals/src/signal.rs +++ b/packages/signals/src/signal.rs @@ -85,7 +85,7 @@ fn current_unsubscriber() -> Unsubscriber { scope: current_scope_id().expect("in a virtual dom"), subscribers: Default::default(), }; - provide_context(owner).expect("in a virtual dom") + provide_context(owner) } } }