fixes #57 (use_idle)

This commit is contained in:
Maccesch 2023-12-05 23:32:51 +00:00
parent bb5054d403
commit 68116b8791

View file

@ -90,24 +90,28 @@ pub fn use_idle_with_options(
let _ = set_idle; let _ = set_idle;
} else { } else {
use crate::utils::create_filter_wrapper; use crate::utils::create_filter_wrapper;
use crate::{use_document, use_event_listener, use_event_listener_with_options,UseEventListenerOptions}; use crate::{
use_document, use_event_listener, use_event_listener_with_options, UseEventListenerOptions,
};
use leptos::ev::{visibilitychange, Custom}; use leptos::ev::{visibilitychange, Custom};
use leptos::leptos_dom::helpers::TimeoutHandle; use leptos::leptos_dom::helpers::TimeoutHandle;
use std::cell::Cell; use std::cell::Cell;
use std::rc::Rc;
use std::time::Duration; use std::time::Duration;
let timer = Rc::new(Cell::new(None::<TimeoutHandle>));
let reset = { let reset = {
let timer = Cell::new(None::<TimeoutHandle>); let timer = Rc::clone(&timer);
move || { move || {
set_idle.set(false); set_idle.set(false);
if let Some(timer) = timer.take() { if let Some(timer) = timer.replace(
timer.clear();
}
timer.replace(
set_timeout_with_handle(move || set_idle.set(true), Duration::from_millis(timeout)) set_timeout_with_handle(move || set_idle.set(true), Duration::from_millis(timeout))
.ok(), .ok(),
); ) {
timer.clear();
}
} }
}; };