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.
This commit is contained in:
Benjamin Lee 2024-06-25 16:03:43 -07:00
parent 51dd75c3dc
commit 18360cd3f9
No known key found for this signature in database
GPG key ID: FB9624E2885D55A4

View file

@ -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::<serde_json::Value>(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(())