From: Ian Jackson Date: Thu, 25 Mar 2021 14:57:13 +0000 (+0000) Subject: wasm: RegionList: Have methods return a `changed` bool X-Git-Tag: otter-0.5.0~418 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=7d8c05a354a95f36645dde9b03cfe62fcffe93ba;p=otter.git wasm: RegionList: Have methods return a `changed` bool Signed-off-by: Ian Jackson --- diff --git a/wasm/wasm.rs b/wasm/wasm.rs index 00f9c379..e7279207 100644 --- a/wasm/wasm.rs +++ b/wasm/wasm.rs @@ -153,22 +153,26 @@ pub fn empty_region_list() -> RegionList { RegionList(default()) } #[wasm_bindgen] impl RegionList { pub fn insert(&mut self, piece: JsValue, region: JsValue) - -> Result<(), JsValue> + -> Result { let piece = piece .as_string().ok_or(BadRegionArguments).e()?; let region = region.as_string().ok_or(BadRegionArguments).e()?; let region: RegionC = serde_json::from_str(®ion) .map_err(|_| BadRegionArguments).e()?; - self.0.insert(piece, region); - Ok(()) + let changed = match self.0.insert(piece, region.clone()) { + Some(old_region) => old_region != region, + None => true, + }; + Ok(changed) } pub fn remove(&mut self, piece: JsValue) - -> Result<(), JsValue> + -> Result { let piece = piece .as_string().ok_or(BadRegionArguments).e()?; - self.0.remove(&piece); - Ok(()) + let was = self.0.remove(&piece); + let changed = was.is_some(); + Ok(changed) } pub fn contains_pos(&mut self, x: Number, y: Number) -> bool {