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 {