Added timeout function for toast notifications
This commit is contained in:
parent
e697272e26
commit
e00f70e1f7
@ -17,6 +17,7 @@ leptos-use = "0.10.2"
|
||||
serde = "1.0.196"
|
||||
serde_json = "1.0.113"
|
||||
rand = "0.8.5"
|
||||
gloo-timers = "0.3.0"
|
||||
|
||||
# utils
|
||||
# strum = { version = "0.25", features = ["derive", "strum_macros"] }
|
||||
|
@ -1,3 +1,4 @@
|
||||
use gloo_timers::future::TimeoutFuture;
|
||||
use leptos::*;
|
||||
use rand::distributions::{Alphanumeric, DistString};
|
||||
|
||||
@ -28,14 +29,23 @@ pub fn add_toast(text: String, option: String) {
|
||||
let id = Alphanumeric.sample_string(&mut rand::thread_rng(), 4);
|
||||
|
||||
let mut vec = context.notifications.get();
|
||||
vec.push(ToastNotification { text, option, id });
|
||||
vec.push(ToastNotification {
|
||||
text,
|
||||
option,
|
||||
id: id.clone(),
|
||||
});
|
||||
context.set_notifications.set(vec);
|
||||
|
||||
spawn_local(async {
|
||||
TimeoutFuture::new(5000).await;
|
||||
remove_toast(id);
|
||||
});
|
||||
}
|
||||
|
||||
pub fn remove_toast(id: String) {
|
||||
let context = expect_context::<NotificationsContext>();
|
||||
|
||||
let mut vec = context.notifications.get();
|
||||
let mut vec = context.notifications.get_untracked();
|
||||
vec.retain(|x| x.id != id);
|
||||
context.set_notifications.set(vec);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user