use crate::store::Store;
pub(super) fn holder_allows_reentry(
store: Option<&Store>,
requester_id: &str,
holder_id: &str,
) -> bool {
if requester_id == holder_id {
return true;
}
let Some(store) = store else {
return false;
};
let mut current = match store.get_task(requester_id) {
Ok(Some(task)) => task.parent_task_id,
_ => return false,
};
for _ in 0..32 {
let Some(parent_id) = current else {
return false;
};
if parent_id == holder_id {
return true;
}
current = match store.get_task(&parent_id) {
Ok(Some(task)) => task.parent_task_id,
_ => None,
};
}
false
}