Compare commits

..

2 commits

4 changed files with 23 additions and 3 deletions

View file

@ -305,9 +305,13 @@ pub fn TypeaheadInput(
// Only set initialized if component is still alive // Only set initialized if component is still alive
if closures_clone.borrow().is_alive.load(Ordering::SeqCst) && !cancel_token.get() { if closures_clone.borrow().is_alive.load(Ordering::SeqCst) && !cancel_token.get() {
// Use a try_update to safely update the signal // Use a try_update to safely update the signal
let _ = try_with_owner(Owner::current().unwrap(), move || { if let Some(owner) = Owner::current() {
let _ = try_with_owner(owner, move || {
set_initialized.set(true); set_initialized.set(true);
}); });
} else {
log!("[INIT] No Leptos owner when setting initialized, aborting");
}
} }
break; break;
} }

View file

@ -3,6 +3,8 @@ pub mod components;
pub mod models; pub mod models;
pub mod nostr; pub mod nostr;
pub mod api; pub mod api;
pub mod utils;
#[cfg(feature = "ssr")] #[cfg(feature = "ssr")]
pub mod db; pub mod db;

13
src/utils/leptos_owner.rs Normal file
View file

@ -0,0 +1,13 @@
/// Utility to safely execute a closure with the current Leptos owner.
/// If the owner is disposed, logs and returns None.
pub fn with_owner_safe<F, R>(log_context: &str, f: F) -> Option<R>
where
F: FnOnce() -> R,
{
if let Some(owner) = leptos::Owner::current() {
leptos::try_with_owner(owner, f).ok()
} else {
leptos::logging::log!("[OWNER] No Leptos owner in context: {}", log_context);
None
}
}

1
src/utils/mod.rs Normal file
View file

@ -0,0 +1 @@
pub mod leptos_owner;