From 60b4ae26095404ad8c20585bb6beb90d8d23e9f2 Mon Sep 17 00:00:00 2001 From: Maccesch Date: Sun, 6 Aug 2023 00:31:48 +0100 Subject: [PATCH] fixed use_storage. This fixes #19 --- examples/Cargo.toml | 1 - src/storage/use_storage.rs | 9 ++++++--- src/use_color_mode.rs | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/examples/Cargo.toml b/examples/Cargo.toml index 5f534d2..4c3dec2 100644 --- a/examples/Cargo.toml +++ b/examples/Cargo.toml @@ -3,7 +3,6 @@ resolver = "2" members = [ "on_click_outside", - "portal", "signal_debounced", "signal_throttled", "use_abs", diff --git a/src/storage/use_storage.rs b/src/storage/use_storage.rs index f5c61e1..7122882 100644 --- a/src/storage/use_storage.rs +++ b/src/storage/use_storage.rs @@ -305,7 +305,7 @@ where .. } = watch_pausable_with_options( move || data.get(), - move |data, _, _| write.clone()(data), + move |data, _, _| Rc::clone(&write)(data), WatchOptions::default().filter(filter), ); @@ -340,7 +340,7 @@ where } if event_detail.is_some() { - // use timeout to avoid inifinite loop + // use timeout to avoid infinite loop let resume = resume_watch.clone(); let _ = set_timeout_with_handle(resume, Duration::ZERO); } else { @@ -352,7 +352,10 @@ where let update_from_custom_event = { let update = Rc::clone(&update); - move |event: web_sys::CustomEvent| update(Some(event.into())) + move |event: web_sys::CustomEvent| { + let update = Rc::clone(&update); + queue_microtask(move || update(Some(event.into()))) + } }; let update_from_storage_event = { diff --git a/src/use_color_mode.rs b/src/use_color_mode.rs index a022045..0804293 100644 --- a/src/use_color_mode.rs +++ b/src/use_color_mode.rs @@ -269,7 +269,7 @@ cfg_if! { if #[cfg(feature = "storage")] { (store.into(), set_store) } else if storage_enabled { let (store, set_store, _) = use_storage_with_options( - storage_key, + storage_key, initial_value, UseStorageOptions::default() .listen_to_storage_changes(listen_to_storage_changes)