Skip to main content

tuwunel_core/matrix/event/
relation.rs

1use ruma::events::relation::RelationType;
2use serde::Deserialize;
3
4use super::Event;
5
6pub trait RelationTypeEqual<E: Event> {
7	fn relation_type_equal(&self, event: &E) -> bool;
8}
9
10#[derive(Clone, Debug, Deserialize)]
11struct ExtractRelatesToEventId {
12	#[serde(rename = "m.relates_to")]
13	relates_to: ExtractRelType,
14}
15
16#[derive(Clone, Debug, Deserialize)]
17struct ExtractRelType {
18	rel_type: RelationType,
19}
20
21impl<E: Event> RelationTypeEqual<E> for RelationType {
22	fn relation_type_equal(&self, event: &E) -> bool {
23		event
24			.get_content()
25			.map(|c: ExtractRelatesToEventId| c.relates_to.rel_type)
26			.is_ok_and(|r| r == *self)
27	}
28}