events: Add transaction_id accessor to applicable event enums
This commit is contained in:
parent
dd24d6be77
commit
1db716f643
@ -8,7 +8,8 @@ use super::{
|
|||||||
Redact,
|
Redact,
|
||||||
};
|
};
|
||||||
use crate::{
|
use crate::{
|
||||||
serde::from_raw_json_value, EventId, MilliSecondsSinceUnixEpoch, RoomId, RoomVersionId, UserId,
|
serde::from_raw_json_value, EventId, MilliSecondsSinceUnixEpoch, RoomId, RoomVersionId,
|
||||||
|
TransactionId, UserId,
|
||||||
};
|
};
|
||||||
|
|
||||||
event_enum! {
|
event_enum! {
|
||||||
@ -153,6 +154,14 @@ impl AnyRoomEvent {
|
|||||||
room_ev_accessor!(room_id: &RoomId);
|
room_ev_accessor!(room_id: &RoomId);
|
||||||
room_ev_accessor!(event_id: &EventId);
|
room_ev_accessor!(event_id: &EventId);
|
||||||
room_ev_accessor!(sender: &UserId);
|
room_ev_accessor!(sender: &UserId);
|
||||||
|
|
||||||
|
/// Returns this event's `transaction_id` from inside `unsigned`, if there is one.
|
||||||
|
pub fn transaction_id(&self) -> Option<&TransactionId> {
|
||||||
|
match self {
|
||||||
|
Self::MessageLike(ev) => ev.transaction_id(),
|
||||||
|
Self::State(ev) => ev.transaction_id(),
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Any sync room event.
|
/// Any sync room event.
|
||||||
@ -173,6 +182,14 @@ impl AnySyncRoomEvent {
|
|||||||
room_ev_accessor!(event_id: &EventId);
|
room_ev_accessor!(event_id: &EventId);
|
||||||
room_ev_accessor!(sender: &UserId);
|
room_ev_accessor!(sender: &UserId);
|
||||||
|
|
||||||
|
/// Returns this event's `transaction_id` from inside `unsigned`, if there is one.
|
||||||
|
pub fn transaction_id(&self) -> Option<&TransactionId> {
|
||||||
|
match self {
|
||||||
|
Self::MessageLike(ev) => ev.transaction_id(),
|
||||||
|
Self::State(ev) => ev.transaction_id(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Converts `self` to an `AnyRoomEvent` by adding the given a room ID.
|
/// Converts `self` to an `AnyRoomEvent` by adding the given a room ID.
|
||||||
pub fn into_full_event(self, room_id: Box<RoomId>) -> AnyRoomEvent {
|
pub fn into_full_event(self, room_id: Box<RoomId>) -> AnyRoomEvent {
|
||||||
match self {
|
match self {
|
||||||
|
@ -487,6 +487,25 @@ fn expand_accessor_methods(
|
|||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
|
||||||
|
let txn_id_accessor = maybe_redacted.then(|| {
|
||||||
|
let variants = variants.iter().map(|v| v.match_arm(quote! { Self }));
|
||||||
|
quote! {
|
||||||
|
/// Returns this event's `transaction_id` from inside `unsigned`, if there is one.
|
||||||
|
pub fn transaction_id(&self) -> Option<&#ruma_common::TransactionId> {
|
||||||
|
match self {
|
||||||
|
#(
|
||||||
|
#variants(event) => {
|
||||||
|
event.as_original().and_then(|ev| ev.unsigned.transaction_id.as_deref())
|
||||||
|
}
|
||||||
|
)*
|
||||||
|
Self::_Custom(event) => {
|
||||||
|
event.as_original().and_then(|ev| ev.unsigned.transaction_id.as_deref())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
Ok(quote! {
|
Ok(quote! {
|
||||||
#[automatically_derived]
|
#[automatically_derived]
|
||||||
impl #ident {
|
impl #ident {
|
||||||
@ -497,6 +516,7 @@ fn expand_accessor_methods(
|
|||||||
|
|
||||||
#content_accessors
|
#content_accessors
|
||||||
#( #methods )*
|
#( #methods )*
|
||||||
|
#txn_id_accessor
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user