From 18360cd3f94efb5c861694238f07dc415f2c4979 Mon Sep 17 00:00:00 2001 From: Benjamin Lee Date: Tue, 25 Jun 2024 16:03:43 -0700 Subject: [PATCH] refactor error handling in copy_upgraded_account_data_tag The new error handling logic is semantically different from the old, but I don't know of any cases you could hit in practice where it would matter. --- src/service/rooms/state_cache.rs | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/src/service/rooms/state_cache.rs b/src/service/rooms/state_cache.rs index 7fc35247..135a80f5 100644 --- a/src/service/rooms/state_cache.rs +++ b/src/service/rooms/state_cache.rs @@ -184,21 +184,23 @@ impl Service { from_room_id: &RoomId, to_room_id: &RoomId, ) -> Result<()> { - let event_kind = RoomAccountDataEventType::Tag; - if let Some(tag_event) = services() - .account_data - .get(Some(from_room_id), user_id, event_kind.clone())? - .map(|event| { - serde_json::from_str(event.get()).map_err(|error| { - warn!(%error, %event_kind, "Invalid account data event"); - Error::BadDatabase("Invalid account data event.") - }) - }) - { - services() - .account_data - .update(Some(to_room_id), user_id, event_kind, &tag_event?) - .ok(); + let Some(event) = services().account_data.get( + Some(from_room_id), + user_id, + RoomAccountDataEventType::Tag, + )? + else { + return Ok(()); + }; + let event = serde_json::from_str::(event.get()) + .expect("RawValue -> Value should always succeed"); + if let Err(error) = services().account_data.update( + Some(to_room_id), + user_id, + RoomAccountDataEventType::Tag, + &event, + ) { + warn!(%error, "error writing m.tag account data to upgraded room"); } Ok(())