fix: proprogation of root context

This commit is contained in:
Jonathan Kelley 2022-01-21 09:29:41 -05:00
parent 70f2ef43db
commit c8d528b3b1

View file

@ -702,19 +702,22 @@ impl ScopeState {
while let Some(parent) = search_parent.take() {
let parent = unsafe { &*parent };
if parent
.shared_contexts
.borrow_mut()
.insert(TypeId::of::<T>(), value.clone())
.is_some()
{
log::warn!("Context already provided to parent scope - replacing it");
if parent.scope_id() == ScopeId(0) {
let exists = parent
.shared_contexts
.borrow_mut()
.insert(TypeId::of::<T>(), value.clone());
if exists.is_some() {
log::warn!("Context already provided to parent scope - replacing it");
}
return value;
}
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.