From 10fc8d81c995e2ee768d62a984218fa62121a9ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Wo=C5=BAniak?= Date: Sat, 16 Jan 2021 19:44:53 +0100 Subject: [PATCH] Delete epic --- jirs-client/src/modals/epic_delete/update.rs | 30 +++++++++++++++++--- jirs-client/src/modals/epic_delete/view.rs | 5 ++++ 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/jirs-client/src/modals/epic_delete/update.rs b/jirs-client/src/modals/epic_delete/update.rs index 7a5b8781..3334707b 100644 --- a/jirs-client/src/modals/epic_delete/update.rs +++ b/jirs-client/src/modals/epic_delete/update.rs @@ -1,10 +1,32 @@ use { - crate::{shared::go_to_board, Msg}, + crate::{shared::go_to_board, ws::send_ws_msg, ModalType, Msg, OperationKind, ResourceKind}, + jirs_data::WsMsg, seed::prelude::*, }; -pub fn update(msg: &Msg, _model: &mut crate::model::Model, orders: &mut impl Orders) { - if let Msg::ModalDropped = msg { - go_to_board(orders); +pub fn update(msg: &Msg, model: &mut crate::model::Model, orders: &mut impl Orders) { + let modal = match model.modals.iter_mut().find_map(|modal| { + if let ModalType::DeleteEpic(modal) = modal { + Some(modal) + } else { + None + } + }) { + Some(modal) => modal, + _ => return, + }; + + match msg { + Msg::ModalDropped => { + go_to_board(orders); + } + Msg::DeleteEpic => { + send_ws_msg(WsMsg::EpicDelete(modal.epic_id), model.ws.as_ref(), orders); + } + Msg::ResourceChanged(ResourceKind::Epic, OperationKind::SingleRemoved, Some(_)) => { + go_to_board(orders); + orders.skip().send_msg(Msg::ModalDropped); + } + _ => {} }; } diff --git a/jirs-client/src/modals/epic_delete/view.rs b/jirs-client/src/modals/epic_delete/view.rs index c1c3f258..43c91fdc 100644 --- a/jirs-client/src/modals/epic_delete/view.rs +++ b/jirs-client/src/modals/epic_delete/view.rs @@ -15,6 +15,11 @@ pub fn view(model: &model::Model, modal: &Model) -> Node { .title("Delete empty epic") .cancel_text("Cancel") .confirm_text("Delete epic") + .on_confirm(mouse_ev("click", move |ev| { + ev.stop_propagation(); + ev.prevent_default(); + Msg::DeleteEpic + })) .build() .into_node() } else {