From c1949e3fc6f800e364aee8e58018cc27e8bbf631 Mon Sep 17 00:00:00 2001 From: Jonas Platte Date: Tue, 6 Dec 2022 17:32:05 +0100 Subject: [PATCH] refactor(sdk): Move timeline::add_event_id to TimelineInner --- crates/matrix-sdk/src/room/timeline/inner.rs | 25 ++++++++++++++++++-- crates/matrix-sdk/src/room/timeline/mod.rs | 25 ++------------------ 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/crates/matrix-sdk/src/room/timeline/inner.rs b/crates/matrix-sdk/src/room/timeline/inner.rs index 2d4dec434..3673706d6 100644 --- a/crates/matrix-sdk/src/room/timeline/inner.rs +++ b/crates/matrix-sdk/src/room/timeline/inner.rs @@ -9,7 +9,7 @@ use matrix_sdk_base::{ use ruma::{ events::{fully_read::FullyReadEvent, AnyMessageLikeEventContent, AnySyncTimelineEvent}, serde::Raw, - OwnedEventId, OwnedTransactionId, RoomId, UserId, + OwnedEventId, OwnedTransactionId, RoomId, TransactionId, UserId, }; use tracing::{error, info, warn}; @@ -18,7 +18,7 @@ use super::{ update_read_marker, Flow, TimelineEventHandler, TimelineEventKind, TimelineEventMetadata, TimelineItemPosition, }, - TimelineInnerMetadata, TimelineItem, TimelineKey, + find_event, TimelineInnerMetadata, TimelineItem, TimelineKey, }; use crate::events::SyncTimelineEventWithoutContent; @@ -105,6 +105,27 @@ impl TimelineInner { ); } + pub(super) fn add_event_id(&self, txn_id: &TransactionId, event_id: OwnedEventId) { + let mut lock = self.items.lock_mut(); + if let Some((idx, item)) = find_event(&lock, txn_id) { + match &item.key { + TimelineKey::TransactionId(_) => { + lock.set_cloned( + idx, + Arc::new(TimelineItem::Event(item.with_event_id(Some(event_id)))), + ); + } + TimelineKey::EventId(ev_id) => { + if *ev_id != event_id { + error!("remote echo and send-event response disagree on the event ID"); + } + } + } + } else { + warn!(%txn_id, "Timeline item not found, can't add event ID"); + } + } + pub(super) async fn handle_fully_read(&self, raw: Raw) { let fully_read_event = match raw.deserialize() { Ok(ev) => ev.content.event_id, diff --git a/crates/matrix-sdk/src/room/timeline/mod.rs b/crates/matrix-sdk/src/room/timeline/mod.rs index 564cf6b7b..6e88b8754 100644 --- a/crates/matrix-sdk/src/room/timeline/mod.rs +++ b/crates/matrix-sdk/src/room/timeline/mod.rs @@ -29,7 +29,7 @@ use ruma::{ events::{fully_read::FullyReadEventContent, relation::Annotation, AnyMessageLikeEventContent}, OwnedEventId, OwnedUserId, TransactionId, UInt, }; -use tracing::{error, instrument, warn}; +use tracing::{error, instrument}; use super::{Joined, Room}; use crate::{ @@ -324,7 +324,7 @@ impl Timeline { let room = Joined { inner: self.room.clone() }; let response = room.send(content, Some(&txn_id)).await?; - add_event_id(&self.inner, &txn_id, response.event_id); + self.inner.add_event_id(&txn_id, response.event_id); Ok(()) } @@ -380,24 +380,3 @@ fn find_read_marker(lock: &[Arc]) -> Option { }) .map(|(idx, _)| idx) } - -fn add_event_id(items: &TimelineInner, txn_id: &TransactionId, event_id: OwnedEventId) { - let mut lock = items.items.lock_mut(); - if let Some((idx, item)) = find_event(&lock, txn_id) { - match &item.key { - TimelineKey::TransactionId(_) => { - lock.set_cloned( - idx, - Arc::new(TimelineItem::Event(item.with_event_id(Some(event_id)))), - ); - } - TimelineKey::EventId(ev_id) => { - if *ev_id != event_id { - error!("remote echo and send-event response disagree on the event ID"); - } - } - } - } else { - warn!(%txn_id, "Timeline item not found, can't add event ID"); - } -}