events: Add relations accessors to event enums
This commit is contained in:
parent
956871cfa6
commit
fa61cc1248
@ -5,7 +5,7 @@ use serde_json::value::RawValue as RawJsonValue;
|
||||
use super::{
|
||||
key,
|
||||
room::{encrypted, redaction::SyncRoomRedactionEvent},
|
||||
Redact,
|
||||
Redact, Relations,
|
||||
};
|
||||
use crate::{
|
||||
serde::from_raw_json_value, EventId, MilliSecondsSinceUnixEpoch, OwnedRoomId, RoomId,
|
||||
@ -180,6 +180,9 @@ impl AnyTimelineEvent {
|
||||
|
||||
/// Returns this event's `transaction_id` from inside `unsigned`, if there is one.
|
||||
pub fn transaction_id(&self) -> Option<&TransactionId>;
|
||||
|
||||
/// Returns this event's `relations` from inside `unsigned`, if that field exists.
|
||||
pub fn relations(&self) -> Option<&Relations>;
|
||||
}
|
||||
}
|
||||
|
||||
@ -209,6 +212,9 @@ impl AnySyncTimelineEvent {
|
||||
|
||||
/// Returns this event's `transaction_id` from inside `unsigned`, if there is one.
|
||||
pub fn transaction_id(&self) -> Option<&TransactionId>;
|
||||
|
||||
/// Returns this event's `relations` from inside `unsigned`, if that field exists.
|
||||
pub fn relations(&self) -> Option<&Relations>;
|
||||
}
|
||||
|
||||
/// Converts `self` to an `AnyTimelineEvent` by adding the given a room ID.
|
||||
|
@ -575,8 +575,10 @@ fn expand_accessor_methods(
|
||||
}
|
||||
});
|
||||
|
||||
let txn_id_accessor = maybe_redacted.then(|| {
|
||||
let maybe_redacted_accessors = maybe_redacted.then(|| {
|
||||
let variants = variants.iter().map(|v| v.match_arm(quote! { Self }));
|
||||
let variants2 = variants.clone();
|
||||
|
||||
quote! {
|
||||
/// Returns this event's `transaction_id` from inside `unsigned`, if there is one.
|
||||
pub fn transaction_id(&self) -> Option<&#ruma_common::TransactionId> {
|
||||
@ -591,6 +593,20 @@ fn expand_accessor_methods(
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Returns this event's `relations` from inside `unsigned`, if that field exists.
|
||||
pub fn relations(&self) -> Option<&#ruma_common::events::Relations> {
|
||||
match self {
|
||||
#(
|
||||
#variants2(event) => {
|
||||
event.as_original().and_then(|ev| ev.unsigned.relations.as_ref())
|
||||
}
|
||||
)*
|
||||
Self::_Custom(event) => {
|
||||
event.as_original().and_then(|ev| ev.unsigned.relations.as_ref())
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@ -605,7 +621,7 @@ fn expand_accessor_methods(
|
||||
#content_accessor
|
||||
#( #methods )*
|
||||
#state_key_accessor
|
||||
#txn_id_accessor
|
||||
#maybe_redacted_accessors
|
||||
}
|
||||
})
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user