fix: proprogation of root context

This commit is contained in:
Jonathan Kelley committed 2022-01-21 09:29:41 -05:00
1 parent 70f2ef43db
commit c8d528b3b1
1 file changed
+8 -5
+8 -5
View File
@@ -702,19 +702,22 @@ impl ScopeState {
while let Some(parent) = search_parent.take() { while let Some(parent) = search_parent.take() {
let parent = unsafe { &*parent }; let parent = unsafe { &*parent };
if parent if parent.scope_id() == ScopeId(0) {
let exists = parent
.shared_contexts .shared_contexts
.borrow_mut() .borrow_mut()
.insert(TypeId::of::<T>(), value.clone()) .insert(TypeId::of::<T>(), value.clone());
.is_some()
{ if exists.is_some() {
log::warn!("Context already provided to parent scope - replacing it"); log::warn!("Context already provided to parent scope - replacing it");
} }
return value;
}
search_parent = parent.parent_scope; search_parent = parent.parent_scope;
} }
value unreachable!("all apps have a root scope")
} }
/// Try to retrieve a SharedState with type T from the any parent Scope. /// Try to retrieve a SharedState with type T from the any parent Scope.