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