From 6e8c1eff5528b45d8b5c4f507104477f71b49c53 Mon Sep 17 00:00:00 2001 From: Emilia Date: Wed, 24 May 2023 15:49:07 -0400 Subject: [PATCH] Only modify NewTransferState by reduce_mut --- src/components/plates/destination_plate.rs | 12 ++++-------- src/components/plates/source_plate.rs | 11 +++-------- src/components/transfer_menu.rs | 18 ++++-------------- 3 files changed, 11 insertions(+), 30 deletions(-) diff --git a/src/components/plates/destination_plate.rs b/src/components/plates/destination_plate.rs index cde6ac8..44fd58d 100644 --- a/src/components/plates/destination_plate.rs +++ b/src/components/plates/destination_plate.rs @@ -1,6 +1,7 @@ #![allow(non_snake_case)] use yew::prelude::*; use yewdux::prelude::*; +use std::intrinsics::discriminant_value; use std::rc::Rc; use super::super::states::NewTransferState; @@ -36,7 +37,6 @@ pub fn DestinationPlate(props: &DestinationPlateProps) -> Html { }; let dispatch = Dispatch::::subscribe(menu_sync_callback); - let mouse_callback = { let m_start_handle = m_start_handle.clone(); let m_end_handle = m_end_handle.clone(); @@ -69,13 +69,9 @@ pub fn DestinationPlate(props: &DestinationPlateProps) -> Html { if let Some(ul) = *m_start_handle { if let Some(br) = *m_end_handle { if let Ok(rd) = RegionDisplay::try_from((ul.0, ul.1, br.0, br.1)) { - dispatch.set(NewTransferState { - source_id: current.source_id, - destination_id: current.destination_id, - source_region: current.source_region.clone(), - destination_region: rd, - interleave_x: current.interleave_x, - interleave_y: current.interleave_y }) + dispatch.reduce_mut(|state| { + state.destination_region = rd; + }); } } } diff --git a/src/components/plates/source_plate.rs b/src/components/plates/source_plate.rs index 74638c4..e7a83df 100644 --- a/src/components/plates/source_plate.rs +++ b/src/components/plates/source_plate.rs @@ -64,18 +64,13 @@ pub fn SourcePlate(props: &SourcePlateProps) -> Html { let m_stat_handle = m_stat_handle.clone(); Callback::from(move |_: MouseEvent| { - let current = dispatch.get(); m_stat_handle.set(false); if let Some(ul) = *m_start_handle { if let Some(br) = *m_end_handle { if let Ok(rd) = RegionDisplay::try_from((ul.0, ul.1, br.0, br.1)) { - dispatch.set(NewTransferState { - source_id: current.source_id, - destination_id: current.destination_id, - source_region: rd, - destination_region: current.destination_region.clone(), - interleave_x: current.interleave_x, - interleave_y: current.interleave_y }) + dispatch.reduce_mut(|state| { + state.source_region = rd; + }); } } } diff --git a/src/components/transfer_menu.rs b/src/components/transfer_menu.rs index 91c3610..e65af8c 100644 --- a/src/components/transfer_menu.rs +++ b/src/components/transfer_menu.rs @@ -24,13 +24,8 @@ pub fn TransferMenu() -> Html { let input = target.and_then(|t| t.dyn_into::().ok()); if let Some(input) = input { if let Ok(rd) = RegionDisplay::try_from(input.value()) { - dispatch.set( NewTransferState { - source_id: state.source_id, - destination_id: state.destination_id, - source_region: rd, - destination_region: state.destination_region.clone(), - interleave_x: state.interleave_x, - interleave_y: state.interleave_y + dispatch.reduce_mut(|state| { + state.source_region = rd; }); input.set_custom_validity(""); } else { @@ -49,13 +44,8 @@ pub fn TransferMenu() -> Html { let input = target.and_then(|t| t.dyn_into::().ok()); if let Some(input) = input { if let Ok(rd) = RegionDisplay::try_from(input.value()) { - dispatch.set( NewTransferState { - source_id: state.source_id, - destination_id: state.destination_id, - source_region: state.source_region.clone(), - destination_region: rd, - interleave_x: state.interleave_x, - interleave_y: state.interleave_y + dispatch.reduce_mut(|state| { + state.destination_region = rd; }); input.set_custom_validity(""); } else {