From 784171e261c63bc5d1f5a92bb54c9fa3dae90ab7 Mon Sep 17 00:00:00 2001 From: Jonas Platte Date: Wed, 20 Sep 2023 11:41:16 +0200 Subject: [PATCH] ffi: Don't check original sender of message when editing The timeline checks this already. The network request made for this was wasteful and unnecessary. --- bindings/matrix-sdk-ffi/src/room.rs | 29 +++++------------------------ 1 file changed, 5 insertions(+), 24 deletions(-) diff --git a/bindings/matrix-sdk-ffi/src/room.rs b/bindings/matrix-sdk-ffi/src/room.rs index ddfc6afb5..56883dd2b 100644 --- a/bindings/matrix-sdk-ffi/src/room.rs +++ b/bindings/matrix-sdk-ffi/src/room.rs @@ -1,6 +1,6 @@ use std::{convert::TryFrom, fs, sync::Arc}; -use anyhow::{anyhow, bail, Context, Result}; +use anyhow::{anyhow, Context, Result}; use futures_util::{pin_mut, StreamExt}; use matrix_sdk::{ attachment::{ @@ -575,29 +575,10 @@ impl Room { None => return Err(anyhow!("Timeline not set up, can't send message").into()), }; - let event_id: &EventId = - original_event_id.as_str().try_into().context("Failed to create EventId.")?; - - let edited_content = RUNTIME.block_on(async move { - let timeline_event = - self.inner.event(event_id).await.context("Couldn't find event.")?; - - let event_content = timeline_event - .event - .deserialize_as::() - .context("Couldn't deserialise event")?; - - if self.inner.own_user_id() != event_content.sender() { - bail!("Can't edit an event not sent by own user"); - } - - let replacement: Replacement = - Replacement::new(event_id.to_owned(), (*new_msg).clone().to_owned()); - - let mut edited_content = (*new_msg).clone().with_relation(None); - edited_content.relates_to = Some(Relation::Replacement(replacement)); - Ok(edited_content) - })?; + let event_id = EventId::parse(original_event_id).context("Failed to create EventId.")?; + let edited_content = (*new_msg).clone().with_relation(Some(Relation::Replacement( + Replacement::new(event_id, (*new_msg).clone()), + ))); RUNTIME.spawn(async move { timeline.send(edited_content.into(), txn_id.as_deref().map(Into::into)).await;