Skip to content

Commit 6ce266a

Browse files
committed
chore(base): don't show timeline verification requests as last messages
1 parent db585dc commit 6ce266a

File tree

1 file changed

+35
-2
lines changed

1 file changed

+35
-2
lines changed

crates/matrix-sdk-base/src/latest_event.rs

+35-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use ruma::{
1010
relation::RelationType,
1111
room::{
1212
member::{MembershipState, SyncRoomMemberEvent},
13-
message::SyncRoomMessageEvent,
13+
message::{MessageType, SyncRoomMessageEvent},
1414
power_levels::RoomPowerLevels,
1515
},
1616
sticker::SyncStickerEvent,
@@ -67,8 +67,13 @@ pub fn is_suitable_for_latest_event<'a>(
6767
match event {
6868
// Suitable - we have an m.room.message that was not redacted or edited
6969
AnySyncTimelineEvent::MessageLike(AnySyncMessageLikeEvent::RoomMessage(message)) => {
70-
// Check if this is a replacement for another message. If it is, ignore it
7170
if let Some(original_message) = message.as_original() {
71+
// Don't show incoming verification requests
72+
if let MessageType::VerificationRequest(_) = original_message.content.msgtype {
73+
return PossibleLatestEvent::NoUnsupportedMessageLikeType;
74+
}
75+
76+
// Check if this is a replacement for another message. If it is, ignore it
7277
let is_replacement =
7378
original_message.content.relates_to.as_ref().is_some_and(|relates_to| {
7479
if let Some(relation_type) = relates_to.rel_type() {
@@ -589,6 +594,34 @@ mod tests {
589594
);
590595
}
591596

597+
#[cfg(feature = "e2e-encryption")]
598+
#[test]
599+
fn test_verification_requests_are_unsuitable() {
600+
use ruma::{device_id, events::room::message::KeyVerificationRequestEventContent, user_id};
601+
602+
let event = AnySyncTimelineEvent::MessageLike(AnySyncMessageLikeEvent::RoomMessage(
603+
SyncRoomMessageEvent::Original(OriginalSyncMessageLikeEvent {
604+
content: RoomMessageEventContent::new(MessageType::VerificationRequest(
605+
KeyVerificationRequestEventContent::new(
606+
"body".to_owned(),
607+
vec![],
608+
device_id!("device_id").to_owned(),
609+
user_id!("@user_id:example.com").to_owned(),
610+
),
611+
)),
612+
event_id: owned_event_id!("$1"),
613+
sender: owned_user_id!("@a:b.c"),
614+
origin_server_ts: MilliSecondsSinceUnixEpoch(UInt::new(123).unwrap()),
615+
unsigned: MessageLikeUnsigned::new(),
616+
}),
617+
));
618+
619+
assert_let!(
620+
PossibleLatestEvent::NoUnsupportedMessageLikeType =
621+
is_suitable_for_latest_event(&event, None)
622+
);
623+
}
624+
592625
#[test]
593626
fn test_deserialize_latest_event() {
594627
#[derive(Debug, serde::Serialize, serde::Deserialize)]

0 commit comments

Comments
 (0)