mirror of
https://github.com/matrix-org/matrix-rust-sdk.git
synced 2025-12-24 00:01:03 -05:00
fix: Correctly construct the decrypted event in the send queue
This commit is contained in:
@@ -753,47 +753,45 @@ impl RoomSendQueue {
|
||||
// happened successfully. This feature is not considered “crucial”.
|
||||
if let Ok((room_event_cache, _drop_handles)) = room.event_cache().await
|
||||
{
|
||||
let timeline_event = match encryption_info {
|
||||
#[cfg(feature = "e2e-encryption")]
|
||||
Some(encryption_info) => {
|
||||
use matrix_sdk_base::deserialized_responses::DecryptedRoomEvent;
|
||||
|
||||
Some(TimelineEvent::from_decrypted(
|
||||
DecryptedRoomEvent {
|
||||
let timeline_event = match Raw::from_json_string(
|
||||
// Create a compact string: remove all useless spaces.
|
||||
format!(
|
||||
"{{\
|
||||
\"event_id\":\"{event_id}\",\
|
||||
\"origin_server_ts\":{ts},\
|
||||
\"sender\":\"{sender}\",\
|
||||
\"type\":\"{type}\",\
|
||||
\"content\":{content}\
|
||||
}}",
|
||||
event_id = event_id,
|
||||
ts = MilliSecondsSinceUnixEpoch::now().get(),
|
||||
sender = room.client().user_id().expect("Client must be logged-in"),
|
||||
type = event_type,
|
||||
content = event.into_json(),
|
||||
),
|
||||
) {
|
||||
Ok(event) => match encryption_info {
|
||||
#[cfg(feature = "e2e-encryption")]
|
||||
Some(encryption_info) => {
|
||||
use matrix_sdk_base::deserialized_responses::DecryptedRoomEvent;
|
||||
let decrypted_event = DecryptedRoomEvent {
|
||||
event: event.cast_unchecked(),
|
||||
encryption_info: Arc::new(encryption_info),
|
||||
unsigned_encryption_info: None,
|
||||
},
|
||||
None,
|
||||
))
|
||||
}
|
||||
_ => {
|
||||
match Raw::from_json_string(
|
||||
// Create a compact string: remove all useless spaces.
|
||||
format!(
|
||||
"{{\
|
||||
\"event_id\":\"{event_id}\",\
|
||||
\"origin_server_ts\":{ts},\
|
||||
\"sender\":\"{sender}\",\
|
||||
\"type\":\"{type}\",\
|
||||
\"content\":{content}\
|
||||
}}",
|
||||
event_id = event_id,
|
||||
ts = MilliSecondsSinceUnixEpoch::now().get(),
|
||||
sender = room.client().user_id().expect("Client must be logged-in"),
|
||||
type = event_type,
|
||||
content = event.into_json(),
|
||||
),
|
||||
) {
|
||||
Ok(event) => Some(TimelineEvent::from_plaintext(event)),
|
||||
Err(err) => {
|
||||
error!(
|
||||
?err,
|
||||
"Failed to build the (sync) event before the saving in the Event Cache"
|
||||
);
|
||||
None
|
||||
}
|
||||
};
|
||||
Some(TimelineEvent::from_decrypted(
|
||||
decrypted_event,
|
||||
None,
|
||||
))
|
||||
}
|
||||
_ => Some(TimelineEvent::from_plaintext(event)),
|
||||
},
|
||||
Err(err) => {
|
||||
error!(
|
||||
?err,
|
||||
"Failed to build the (sync) event before the saving in the Event Cache"
|
||||
);
|
||||
None
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user