From 53457a3e8688683a7c5d892af1a0d69c9d16b2d8 Mon Sep 17 00:00:00 2001 From: Emilia Date: Sat, 13 Jan 2024 14:05:34 -0500 Subject: [PATCH] new_plate_dialog callbacks For #2 --- src/components/callbacks/mod.rs | 1 + src/components/new_plate_dialog.rs | 51 +++--------------------------- 2 files changed, 5 insertions(+), 47 deletions(-) diff --git a/src/components/callbacks/mod.rs b/src/components/callbacks/mod.rs index e87e443..4141163 100644 --- a/src/components/callbacks/mod.rs +++ b/src/components/callbacks/mod.rs @@ -1 +1,2 @@ pub mod main_window_callbacks; +pub mod new_plate_dialog_callbacks; diff --git a/src/components/new_plate_dialog.rs b/src/components/new_plate_dialog.rs index 0765f26..6451000 100644 --- a/src/components/new_plate_dialog.rs +++ b/src/components/new_plate_dialog.rs @@ -8,6 +8,8 @@ use crate::components::states::MainState; use crate::data::plate::*; use crate::data::plate_instances::PlateInstance; +use crate::components::callbacks::new_plate_dialog_callbacks; + #[derive(PartialEq, Properties)] pub struct NewPlateDialogProps { pub close_callback: Callback<()>, @@ -19,57 +21,12 @@ pub fn NewPlateDialog(props: &NewPlateDialogProps) -> Html { let new_plate_callback = { let close_callback = props.close_callback.clone(); - Callback::from(move |e: SubmitEvent| { - e.prevent_default(); - close_callback.emit(()); - let target: Option = e.target(); - let form = target.and_then(|t| t.dyn_into::().ok()); - if let Some(form) = form { - if let Ok(form_data) = FormData::new_with_form(&form) { - let name = form_data.get("new_plate_name").as_string().unwrap(); - let format = match form_data.get("plate_format").as_string().unwrap().as_str() { - "6" => PlateFormat::W6, - "12" => PlateFormat::W12, - "24" => PlateFormat::W24, - "48" => PlateFormat::W48, - "96" => PlateFormat::W96, - "384" => PlateFormat::W384, - "1536" => PlateFormat::W1536, - "3456" => PlateFormat::W3456, - _ => unreachable!(), - }; - if let Some(pt_string) = form_data.get("new_plate_type").as_string() { - let plate_type = match pt_string.as_str() { - "src" => PlateType::Source, - "dest" => PlateType::Destination, - _ => PlateType::Source, - }; - dispatch.reduce_mut(|s| { - if plate_type == PlateType::Source { - s.add_source_plate(PlateInstance::new( - PlateType::Source, - format, - name, - )) - } else { - s.add_dest_plate(PlateInstance::new( - PlateType::Destination, - format, - name, - )) - } - }); - } - } - } - }) + new_plate_dialog_callbacks::new_plate_callback(dispatch, close_callback) }; let onclose = { let close_callback = props.close_callback.clone(); - Callback::from(move |_: Event| { - close_callback.emit(()); - }) + new_plate_dialog_callbacks::onclose(close_callback) }; // This whole section is optional, only if you want the backdrop