From 359c5280d7181e15404d6f76302828733a6bbc93 Mon Sep 17 00:00:00 2001 From: Denis Kasak Date: Thu, 30 Jul 2020 14:40:27 +0200 Subject: [PATCH 1/3] Expose `sender` in `PossiblyRedactedExt`. Also add a few missing apostrophes. --- matrix_sdk_base/src/models/message.rs | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/matrix_sdk_base/src/models/message.rs b/matrix_sdk_base/src/models/message.rs index fa47b899..6403c60d 100644 --- a/matrix_sdk_base/src/models/message.rs +++ b/matrix_sdk_base/src/models/message.rs @@ -10,7 +10,7 @@ use std::{ vec::IntoIter, }; -use matrix_sdk_common::identifiers::EventId; +use matrix_sdk_common::identifiers::{UserId, EventId}; use serde::{de, ser, Serialize}; use crate::events::AnyPossiblyRedactedSyncMessageEvent; @@ -18,16 +18,18 @@ use crate::events::AnyPossiblyRedactedSyncMessageEvent; /// Exposes some of the field access methods found in the event held by /// `AnyPossiblyRedacted*` enums. /// -/// This is just an extension trait to aid the ease of use of certain event enums. +/// This is just an extension trait to ease the use of certain event enums. pub trait PossiblyRedactedExt { - /// Access the redacted or full events `event_id` field. + /// Access the redacted or full event's `event_id` field. fn event_id(&self) -> &EventId; - /// Access the redacted or full events `origin_server_ts` field. + /// Access the redacted or full event's `origin_server_ts` field. fn origin_server_ts(&self) -> &SystemTime; + /// Access the redacted or full event's `sender` field. + fn sender(&self) -> &UserId; } impl PossiblyRedactedExt for AnyPossiblyRedactedSyncMessageEvent { - /// Access the underlying events `event_id`. + /// Access the underlying event's `event_id`. fn event_id(&self) -> &EventId { match self { Self::Regular(e) => e.event_id(), @@ -35,13 +37,21 @@ impl PossiblyRedactedExt for AnyPossiblyRedactedSyncMessageEvent { } } - /// Access the underlying events `origin_server_ts`. + /// Access the underlying event's `origin_server_ts`. fn origin_server_ts(&self) -> &SystemTime { match self { Self::Regular(e) => e.origin_server_ts(), Self::Redacted(e) => e.origin_server_ts(), } } + + /// Access the underlying event's `sender`. + fn sender(&self) -> &UserId { + match self { + Self::Regular(e) => e.sender(), + Self::Redacted(e) => e.sender(), + } + } } const MESSAGE_QUEUE_CAP: usize = 35; From e00e94c6c3603043288f6fdbd21a9ba6e941975e Mon Sep 17 00:00:00 2001 From: Denis Kasak Date: Fri, 31 Jul 2020 11:46:52 +0200 Subject: [PATCH 2/3] Fix input order. --- matrix_sdk_base/src/models/message.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/matrix_sdk_base/src/models/message.rs b/matrix_sdk_base/src/models/message.rs index 6403c60d..50f7b3f3 100644 --- a/matrix_sdk_base/src/models/message.rs +++ b/matrix_sdk_base/src/models/message.rs @@ -10,7 +10,7 @@ use std::{ vec::IntoIter, }; -use matrix_sdk_common::identifiers::{UserId, EventId}; +use matrix_sdk_common::identifiers::{EventId, UserId}; use serde::{de, ser, Serialize}; use crate::events::AnyPossiblyRedactedSyncMessageEvent; From 2ce07652064b100a6fef59327ac07ad5ae4e2d5f Mon Sep 17 00:00:00 2001 From: Denis Kasak Date: Fri, 31 Jul 2020 14:21:00 +0200 Subject: [PATCH 3/3] Remove confusing type alias for AnyPossiblyRedactedSyncMessageEvent. There's already a SyncMessageEvent in Ruma which is something else. Let's prefer the full, unambiguous type. --- matrix_sdk_base/src/models/message.rs | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/matrix_sdk_base/src/models/message.rs b/matrix_sdk_base/src/models/message.rs index fa47b899..fcaa5cc4 100644 --- a/matrix_sdk_base/src/models/message.rs +++ b/matrix_sdk_base/src/models/message.rs @@ -46,24 +46,22 @@ impl PossiblyRedactedExt for AnyPossiblyRedactedSyncMessageEvent { const MESSAGE_QUEUE_CAP: usize = 35; -pub type SyncMessageEvent = AnyPossiblyRedactedSyncMessageEvent; - /// A queue that holds the 35 most recent messages received from the server. #[derive(Clone, Debug, Default)] pub struct MessageQueue { pub(crate) msgs: Vec, } -/// A wrapper for `ruma_events::SyncMessageEvent` that allows implementation of -/// Eq, Ord and the Partial versions of the traits. +/// A wrapper for `ruma_events::AnyPossiblyRedactedSyncMessageEvent` that allows +/// implementation of Eq, Ord and the Partial versions of the traits. /// -/// `MessageWrapper` also implements Deref and DerefMut so accessing the events contents -/// are simplified. +/// `MessageWrapper` also implements Deref and DerefMut so accessing the events +/// contents are simplified. #[derive(Clone, Debug, Serialize)] -pub struct MessageWrapper(pub SyncMessageEvent); +pub struct MessageWrapper(pub AnyPossiblyRedactedSyncMessageEvent); impl Deref for MessageWrapper { - type Target = SyncMessageEvent; + type Target = AnyPossiblyRedactedSyncMessageEvent; fn deref(&self) -> &Self::Target { &self.0 @@ -118,7 +116,7 @@ impl MessageQueue { /// Inserts a `MessageEvent` into `MessageQueue`, sorted by by `origin_server_ts`. /// /// Removes the oldest element in the queue if there are more than 10 elements. - pub fn push(&mut self, msg: SyncMessageEvent) -> bool { + pub fn push(&mut self, msg: AnyPossiblyRedactedSyncMessageEvent) -> bool { // only push new messages into the queue if let Some(latest) = self.msgs.last() { if msg.origin_server_ts() < latest.origin_server_ts() && self.msgs.len() >= 10 { @@ -181,7 +179,7 @@ pub(crate) mod ser_deser { { let mut msgs = Vec::with_capacity(access.size_hint().unwrap_or(0)); - while let Some(msg) = access.next_element::()? { + while let Some(msg) = access.next_element::()? { msgs.push(MessageWrapper(msg)); }