events: Add AnyMessageEventContent::relation
This commit is contained in:
parent
61671f4440
commit
d73ab8add9
@ -320,3 +320,44 @@ impl From<AnyRedactedSyncRoomEvent> for AnySyncRoomEvent {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl AnyMessageEventContent {
|
||||||
|
/// Get a copy of the event's `m.relates_to` field, if any.
|
||||||
|
///
|
||||||
|
/// This is a helper function intended for encryption. There should not be a reason to access
|
||||||
|
/// `m.relates_to` without first destructuring an `AnyMessageEventContent` otherwise.
|
||||||
|
pub fn relation(&self) -> Option<crate::room::encrypted::Relation> {
|
||||||
|
#[cfg(feature = "unstable-pre-spec")]
|
||||||
|
use crate::key::verification::{
|
||||||
|
accept::AcceptEventContent, cancel::CancelEventContent, done::DoneEventContent,
|
||||||
|
key::KeyEventContent, mac::MacEventContent, ready::ReadyEventContent,
|
||||||
|
start::StartEventContent,
|
||||||
|
};
|
||||||
|
|
||||||
|
match self {
|
||||||
|
#[cfg(feature = "unstable-pre-spec")]
|
||||||
|
#[rustfmt::skip]
|
||||||
|
AnyMessageEventContent::KeyVerificationReady(ReadyEventContent { relates_to, .. })
|
||||||
|
| AnyMessageEventContent::KeyVerificationStart(StartEventContent { relates_to, .. })
|
||||||
|
| AnyMessageEventContent::KeyVerificationCancel(CancelEventContent { relates_to, .. })
|
||||||
|
| AnyMessageEventContent::KeyVerificationAccept(AcceptEventContent { relates_to, .. })
|
||||||
|
| AnyMessageEventContent::KeyVerificationKey(KeyEventContent { relates_to, .. })
|
||||||
|
| AnyMessageEventContent::KeyVerificationMac(MacEventContent { relates_to, .. })
|
||||||
|
| AnyMessageEventContent::KeyVerificationDone(DoneEventContent { relates_to, .. }) => {
|
||||||
|
Some(relates_to.clone().into())
|
||||||
|
},
|
||||||
|
#[cfg(feature = "unstable-pre-spec")]
|
||||||
|
AnyMessageEventContent::Reaction(ev) => Some(ev.relates_to.clone().into()),
|
||||||
|
AnyMessageEventContent::RoomEncrypted(ev) => ev.relates_to.clone(),
|
||||||
|
AnyMessageEventContent::RoomMessage(ev) => ev.relates_to.clone().map(Into::into),
|
||||||
|
AnyMessageEventContent::CallAnswer(_)
|
||||||
|
| AnyMessageEventContent::CallInvite(_)
|
||||||
|
| AnyMessageEventContent::CallHangup(_)
|
||||||
|
| AnyMessageEventContent::CallCandidates(_)
|
||||||
|
| AnyMessageEventContent::RoomMessageFeedback(_)
|
||||||
|
| AnyMessageEventContent::RoomRedaction(_)
|
||||||
|
| AnyMessageEventContent::Sticker(_)
|
||||||
|
| AnyMessageEventContent::_Custom(_) => None,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user