matrix_sdk_base/response_processors/
verification.rs1use ruma::{
16 RoomId,
17 events::{
18 AnySyncMessageLikeEvent, AnySyncTimelineEvent, SyncMessageLikeEvent,
19 room::message::MessageType,
20 },
21};
22
23use super::e2ee::E2EE;
24use crate::Result;
25
26pub async fn process_if_relevant(
29 event: &AnySyncTimelineEvent,
30 e2ee: E2EE<'_>,
31 room_id: &RoomId,
32) -> Result<()> {
33 if !e2ee.verification_is_allowed {
34 return Ok(());
35 }
36
37 let Some(olm) = e2ee.olm_machine else {
38 return Ok(());
39 };
40
41 let AnySyncTimelineEvent::MessageLike(event) = event else {
42 return Ok(());
43 };
44
45 match event {
46 AnySyncMessageLikeEvent::RoomMessage(SyncMessageLikeEvent::Original(original_event))
49 if matches!(&original_event.content.msgtype, MessageType::VerificationRequest(_)) => {}
50
51 AnySyncMessageLikeEvent::KeyVerificationReady(_)
53 | AnySyncMessageLikeEvent::KeyVerificationStart(_)
54 | AnySyncMessageLikeEvent::KeyVerificationCancel(_)
55 | AnySyncMessageLikeEvent::KeyVerificationAccept(_)
56 | AnySyncMessageLikeEvent::KeyVerificationKey(_)
57 | AnySyncMessageLikeEvent::KeyVerificationMac(_)
58 | AnySyncMessageLikeEvent::KeyVerificationDone(_) => {}
59
60 _ => {
61 return Ok(());
63 }
64 }
65
66 Ok(olm.receive_verification_event(&event.clone().into_full_event(room_id.to_owned())).await?)
67}