diff --git a/web/src/state.rs b/web/src/state.rs index 0a52cec..5faa520 100644 --- a/web/src/state.rs +++ b/web/src/state.rs @@ -443,6 +443,7 @@ pub fn update(msg: Msg, model: &mut Model, orders: &mut impl Orders) { open_messages.insert(id); } } + Msg::MultiMsg(msgs) => msgs.into_iter().for_each(|msg| update(msg, model, orders)), } } // `Model` describes our app state. @@ -541,4 +542,5 @@ pub enum Msg { MessageCollapse(String), MessageExpand(String), + MultiMsg(Vec), } diff --git a/web/src/view/mod.rs b/web/src/view/mod.rs index 7dcac92..5eb3c58 100644 --- a/web/src/view/mod.rs +++ b/web/src/view/mod.rs @@ -341,7 +341,12 @@ fn search_toolbar( attrs!{At::Title => "Mark as spam"}, span![C!["icon", "is-small"], i![C!["far", "fa-hand"]]], IF!(show_icon_text=>span!["Spam"]), - ev(Ev::Click, |_| Msg::SelectionAddTag("Spam".to_string())) + ev(Ev::Click, |_| + Msg::MultiMsg(vec![ + Msg::SelectionAddTag("Spam".to_string()), + Msg::SelectionMarkAsRead + ]) + ) ], ], ] @@ -847,10 +852,10 @@ fn thread( attrs! {At::Title => "Spam"}, span![C!["icon", "is-small"], i![C!["far", "fa-hand"]]], IF!(show_icon_text=>span!["Spam"]), - ev(Ev::Click, move |_| Msg::AddTag( - format!("thread:{spam_thread_id}"), - "Spam".to_string() - )), + ev(Ev::Click, move |_| Msg::MultiMsg(vec![ + Msg::AddTag(format!("thread:{spam_thread_id}"), "Spam".to_string()), + Msg::SetUnread(format!("thread:{spam_thread_id}"), true) + ])), ], ], ],