events: Implement membership_change on [Redacted]RoomMemberEventContent
This commit is contained in:
parent
cf68a4676d
commit
e6c995ef1a
@ -17,7 +17,7 @@ use crate::{
|
|||||||
},
|
},
|
||||||
serde::{CanBeEmpty, Raw, StringEnum},
|
serde::{CanBeEmpty, Raw, StringEnum},
|
||||||
OwnedMxcUri, OwnedServerName, OwnedServerSigningKeyId, OwnedTransactionId, OwnedUserId,
|
OwnedMxcUri, OwnedServerName, OwnedServerSigningKeyId, OwnedTransactionId, OwnedUserId,
|
||||||
PrivOwnedStr, RoomVersionId,
|
PrivOwnedStr, RoomVersionId, UserId,
|
||||||
};
|
};
|
||||||
|
|
||||||
mod change;
|
mod change;
|
||||||
@ -143,6 +143,26 @@ impl RoomMemberEventContent {
|
|||||||
membership: &self.membership,
|
membership: &self.membership,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Helper function for membership change.
|
||||||
|
///
|
||||||
|
/// This requires data from the full event:
|
||||||
|
///
|
||||||
|
/// * The previous details computed from `event.unsigned.prev_content`,
|
||||||
|
/// * The sender of the event,
|
||||||
|
/// * The state key of the event.
|
||||||
|
///
|
||||||
|
/// Check [the specification][spec] for details.
|
||||||
|
///
|
||||||
|
/// [spec]: https://spec.matrix.org/v1.4/client-server-api/#mroommember
|
||||||
|
pub fn membership_change<'a>(
|
||||||
|
&'a self,
|
||||||
|
prev_details: Option<MembershipDetails<'a>>,
|
||||||
|
sender: &UserId,
|
||||||
|
state_key: &UserId,
|
||||||
|
) -> MembershipChange<'a> {
|
||||||
|
membership_change(self.details(), prev_details, sender, state_key)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl RedactContent for RoomMemberEventContent {
|
impl RedactContent for RoomMemberEventContent {
|
||||||
@ -187,6 +207,29 @@ impl RedactedRoomMemberEventContent {
|
|||||||
pub fn details(&self) -> MembershipDetails<'_> {
|
pub fn details(&self) -> MembershipDetails<'_> {
|
||||||
MembershipDetails { avatar_url: None, displayname: None, membership: &self.membership }
|
MembershipDetails { avatar_url: None, displayname: None, membership: &self.membership }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Helper function for membership change.
|
||||||
|
///
|
||||||
|
/// Since redacted events don't have `unsigned.prev_content`, you have to pass the `.details()`
|
||||||
|
/// of the previous `m.room.member` event manually (if there is a previous `m.room.member`
|
||||||
|
/// event).
|
||||||
|
///
|
||||||
|
/// This also requires data from the full event:
|
||||||
|
///
|
||||||
|
/// * The sender of the event,
|
||||||
|
/// * The state key of the event.
|
||||||
|
///
|
||||||
|
/// Check [the specification][spec] for details.
|
||||||
|
///
|
||||||
|
/// [spec]: https://spec.matrix.org/v1.4/client-server-api/#mroommember
|
||||||
|
pub fn membership_change<'a>(
|
||||||
|
&'a self,
|
||||||
|
prev_details: Option<MembershipDetails<'a>>,
|
||||||
|
sender: &UserId,
|
||||||
|
state_key: &UserId,
|
||||||
|
) -> MembershipChange<'a> {
|
||||||
|
membership_change(self.details(), prev_details, sender, state_key)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl EventContent for RedactedRoomMemberEventContent {
|
impl EventContent for RedactedRoomMemberEventContent {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user