From e07212d35698f2f4e3cdc0e3dcf02f1a67c45ed2 Mon Sep 17 00:00:00 2001 From: Ivan Enderlin Date: Wed, 29 Jan 2025 11:31:04 +0100 Subject: [PATCH] task(ui): Add `TimelineMetadata::subscriber_skip_count`. This patch adds the `subscriber_skip_count` field to `TimelineMetadata`. It's going to be used to define the `count` value of the `Skip` higher-order stream that is going to be applied to the `Timeline` subscriber. --- crates/matrix-sdk-ui/src/timeline/controller/metadata.rs | 6 +++++- crates/matrix-sdk-ui/src/timeline/subscriber.rs | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/crates/matrix-sdk-ui/src/timeline/controller/metadata.rs b/crates/matrix-sdk-ui/src/timeline/controller/metadata.rs index d179164a9..0957dc291 100644 --- a/crates/matrix-sdk-ui/src/timeline/controller/metadata.rs +++ b/crates/matrix-sdk-ui/src/timeline/controller/metadata.rs @@ -20,7 +20,8 @@ use tracing::trace; use super::{ super::{ - reactions::Reactions, rfind_event_by_id, TimelineItem, TimelineItemKind, TimelineUniqueId, + reactions::Reactions, rfind_event_by_id, subscriber::skip::SkipCount, TimelineItem, + TimelineItemKind, TimelineUniqueId, }, read_receipts::ReadReceipts, state::PendingPollEvents, @@ -37,6 +38,8 @@ pub(in crate::timeline) struct TimelineMetadata { /// This value is constant over the lifetime of the metadata. internal_id_prefix: Option, + pub(super) subscriber_skip_count: SkipCount, + /// The hook to call whenever we run into a unable-to-decrypt event. /// /// This value is constant over the lifetime of the metadata. @@ -107,6 +110,7 @@ impl TimelineMetadata { is_room_encrypted: Option, ) -> Self { Self { + subscriber_skip_count: SkipCount::new(), own_user_id, next_internal_id: Default::default(), reactions: Default::default(), diff --git a/crates/matrix-sdk-ui/src/timeline/subscriber.rs b/crates/matrix-sdk-ui/src/timeline/subscriber.rs index 4f51ee2b0..e12053e00 100644 --- a/crates/matrix-sdk-ui/src/timeline/subscriber.rs +++ b/crates/matrix-sdk-ui/src/timeline/subscriber.rs @@ -59,7 +59,7 @@ pub mod skip { const MAXIMUM_NUMBER_OF_INITIAL_ITEMS: usize = 20; - #[derive(Clone)] + #[derive(Clone, Debug)] pub struct SkipCount { count: SharedObservable, }