use crate::*;
impl HookContext {
pub fn reset_hook_index(&mut self) {
if let Ok(mut inner) = self.get_inner().try_borrow_mut() {
inner.set_hook_index(0);
}
}
pub fn set_arm_changed(&mut self, changed: usize) {
let cleanups: Vec<Box<dyn FnOnce()>>;
{
let Ok(mut inner) = self.get_inner().try_borrow_mut() else {
return;
};
if inner.get_arm_changed() == changed {
drop(inner);
self.reset_hook_index();
return;
}
cleanups = take(inner.get_mut_cleanups());
inner.get_mut_hooks().clear();
inner.set_arm_changed(changed);
}
for cleanup in cleanups {
cleanup();
}
self.reset_hook_index();
}
}
impl Clone for HookContext {
fn clone(&self) -> Self {
Self::new(self.get_inner().clone())
}
}
impl Default for HookContext {
fn default() -> Self {
Self::new(Rc::new(RefCell::new(HookContextInner::default())))
}
}
impl IntervalHandle {
pub fn clear(&self) {
if let Some(cleanup_window) = web_sys::window() {
cleanup_window.clear_interval_with_handle(self.get_interval_id());
}
}
}
impl PartialEq for IntervalHandle {
fn eq(&self, other: &Self) -> bool {
self.get_interval_id() == other.get_interval_id()
}
}