diff --git a/web/src/state.rs b/web/src/state.rs index f7588bf..4fd30d3 100644 --- a/web/src/state.rs +++ b/web/src/state.rs @@ -224,6 +224,24 @@ pub fn update(msg: Msg, model: &mut Model, orders: &mut impl Orders) { }); } Msg::AddTag(query, tag) => { + orders.skip().perform_cmd(async move { + let res: Result< + graphql_client::Response, + gloo_net::Error, + > = send_graphql(graphql::AddTagMutation::build_query( + graphql::add_tag_mutation::Variables { + query: query.clone(), + tag: tag.clone(), + }, + )) + .await; + if let Err(e) = res { + error!("Failed to add tag {tag} to {query}: {e}"); + } + Msg::Refresh + }); + } + Msg::AddTagAndGoToSearch(query, tag) => { orders.skip().perform_cmd(async move { let res: Result< graphql_client::Response, @@ -256,7 +274,24 @@ pub fn update(msg: Msg, model: &mut Model, orders: &mut impl Orders) { if let Err(e) = res { error!("Failed to remove tag {tag} to {query}: {e}"); } - // TODO: reconsider this behavior + Msg::Refresh + }); + } + Msg::RemoveTagAndGoToSearch(query, tag) => { + orders.skip().perform_cmd(async move { + let res: Result< + graphql_client::Response, + gloo_net::Error, + > = send_graphql(graphql::RemoveTagMutation::build_query( + graphql::remove_tag_mutation::Variables { + query: query.clone(), + tag: tag.clone(), + }, + )) + .await; + if let Err(e) = res { + error!("Failed to remove tag {tag} to {query}: {e}"); + } Msg::GoToSearchResults }); } @@ -505,7 +540,7 @@ pub fn update(msg: Msg, model: &mut Model, orders: &mut impl Orders) { .join(" "); orders .skip() - .perform_cmd(async move { Msg::AddTag(threads, tag) }); + .perform_cmd(async move { Msg::AddTagAndGoToSearch(threads, tag) }); } } Msg::SelectionRemoveTag(tag) => { @@ -520,7 +555,7 @@ pub fn update(msg: Msg, model: &mut Model, orders: &mut impl Orders) { .join(" "); orders .skip() - .perform_cmd(async move { Msg::RemoveTag(threads, tag) }); + .perform_cmd(async move { Msg::RemoveTagAndGoToSearch(threads, tag) }); } } Msg::SelectionMarkAsRead => { @@ -859,7 +894,9 @@ pub enum Msg { SetUnread(String, bool), AddTag(String, String), + AddTagAndGoToSearch(String, String), RemoveTag(String, String), + RemoveTagAndGoToSearch(String, String), Snooze(String, DateTime), FrontPageRequest { diff --git a/web/src/view/mod.rs b/web/src/view/mod.rs index 9d4d7ef..2a286e4 100644 --- a/web/src/view/mod.rs +++ b/web/src/view/mod.rs @@ -458,7 +458,7 @@ fn removable_tags_chiclet<'a>(thread_id: &'a str, tags: &'a [String]) -> Node