diff --git a/bindings/matrix-sdk-ffi/src/room.rs b/bindings/matrix-sdk-ffi/src/room.rs index 90aceb0af..5d43fc4a0 100644 --- a/bindings/matrix-sdk-ffi/src/room.rs +++ b/bindings/matrix-sdk-ffi/src/room.rs @@ -32,7 +32,7 @@ pub enum Membership { Left, } -type TimelineLock = Arc>>>; +pub(crate) type TimelineLock = Arc>>>; pub struct Room { room: SdkRoom, diff --git a/bindings/matrix-sdk-ffi/src/sliding_sync.rs b/bindings/matrix-sdk-ffi/src/sliding_sync.rs index 2b4569677..2419b0693 100644 --- a/bindings/matrix-sdk-ffi/src/sliding_sync.rs +++ b/bindings/matrix-sdk-ffi/src/sliding_sync.rs @@ -20,7 +20,10 @@ use tokio::task::JoinHandle; use tracing::error; use super::{Client, Room, RUNTIME}; -use crate::{helpers::unwrap_or_clone_arc, EventTimelineItem, TimelineDiff, TimelineListener}; +use crate::{ + helpers::unwrap_or_clone_arc, room::TimelineLock, EventTimelineItem, TimelineDiff, + TimelineListener, +}; pub struct StoppableSpawn { handle: Arc>>>, @@ -84,7 +87,7 @@ impl From for UnreadNotificationsCount { pub struct SlidingSyncRoom { inner: matrix_sdk::SlidingSyncRoom, - timeline: Arc>>>, + timeline: TimelineLock, client: Client, } @@ -123,14 +126,6 @@ impl SlidingSyncRoom { .map(|room| Arc::new(Room::with_timeline(room, self.timeline.clone()))) } - /// Removes the timeline. - /// - /// Timeline items cached in memory as well as timeline listeners are - /// dropped. - pub fn remove_timeline(&self) { - *self.timeline.write().unwrap() = None; - } - #[allow(clippy::significant_drop_in_scrutinee)] pub fn latest_room_message(&self) -> Option> { let item = self.inner.latest_event()?; @@ -144,7 +139,7 @@ impl SlidingSyncRoom { listener: Box, ) -> Option> { let Some(timeline) = RUNTIME.block_on(async move { self.inner.timeline().await }) else { - tracing::warn!(room_id=?self.room_id(), "Could set timeline listener: no timeline found."); + tracing::warn!(room_id=?self.room_id(), "Could not set timeline listener: no timeline found."); return None };