Skip to content

Commit 4661ca8

Browse files
committed
timeline: get rid of deref/deref_mut from TimelineInnerStateTransaction to TimelineInnerMetadata
1 parent f3687dc commit 4661ca8

File tree

2 files changed

+16
-29
lines changed

2 files changed

+16
-29
lines changed

crates/matrix-sdk-ui/src/timeline/inner/state.rs

Lines changed: 13 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -558,7 +558,7 @@ impl TimelineInnerStateTransaction<'_> {
558558
read_receipts: if settings.track_read_receipts && should_add {
559559
self.meta.read_receipts.compute_event_receipts(
560560
&event_id,
561-
&self.all_events,
561+
&self.meta.all_events,
562562
matches!(position, TimelineItemPosition::End { .. }),
563563
)
564564
} else {
@@ -607,25 +607,25 @@ impl TimelineInnerStateTransaction<'_> {
607607
self.items.clear();
608608
}
609609

610-
self.all_events.clear();
611-
self.read_receipts.clear();
612-
self.reactions.clear();
613-
self.fully_read_event = None;
610+
self.meta.all_events.clear();
611+
self.meta.read_receipts.clear();
612+
self.meta.reactions.clear();
613+
self.meta.fully_read_event = None;
614614
// We forgot about the fully read marker right above, so wait for a new one
615615
// before attempting to update it for each new timeline item.
616-
self.has_up_to_date_read_marker_item = true;
616+
self.meta.has_up_to_date_read_marker_item = true;
617617

618618
debug!(remaining_items = self.items.len(), "Timeline cleared");
619619
}
620620

621621
#[instrument(skip_all)]
622622
fn set_fully_read_event(&mut self, fully_read_event_id: OwnedEventId) {
623623
// A similar event has been handled already. We can ignore it.
624-
if self.fully_read_event.as_ref().is_some_and(|id| *id == fully_read_event_id) {
624+
if self.meta.fully_read_event.as_ref().is_some_and(|id| *id == fully_read_event_id) {
625625
return;
626626
}
627627

628-
self.fully_read_event = Some(fully_read_event_id);
628+
self.meta.fully_read_event = Some(fully_read_event_id);
629629
self.meta.update_read_marker(&mut self.items);
630630
}
631631

@@ -651,21 +651,21 @@ impl TimelineInnerStateTransaction<'_> {
651651
settings: &TimelineInnerSettings,
652652
) {
653653
match position {
654-
TimelineItemPosition::Start => self.all_events.push_front(event_meta.base_meta()),
654+
TimelineItemPosition::Start => self.meta.all_events.push_front(event_meta.base_meta()),
655655
TimelineItemPosition::End { .. } => {
656656
// Handle duplicated event.
657657
if let Some(pos) =
658-
self.all_events.iter().position(|ev| ev.event_id == event_meta.event_id)
658+
self.meta.all_events.iter().position(|ev| ev.event_id == event_meta.event_id)
659659
{
660-
self.all_events.remove(pos);
660+
self.meta.all_events.remove(pos);
661661
}
662662

663-
self.all_events.push_back(event_meta.base_meta());
663+
self.meta.all_events.push_back(event_meta.base_meta());
664664
}
665665
#[cfg(feature = "e2e-encryption")]
666666
TimelineItemPosition::Update(_) => {
667667
if let Some(event) =
668-
self.all_events.iter_mut().find(|e| e.event_id == event_meta.event_id)
668+
self.meta.all_events.iter_mut().find(|e| e.event_id == event_meta.event_id)
669669
{
670670
if event.visible != event_meta.visible {
671671
event.visible = event_meta.visible;
@@ -701,20 +701,6 @@ impl Drop for TimelineInnerStateTransaction<'_> {
701701
}
702702
}
703703

704-
impl Deref for TimelineInnerStateTransaction<'_> {
705-
type Target = TimelineInnerMetadata;
706-
707-
fn deref(&self) -> &Self::Target {
708-
self.meta
709-
}
710-
}
711-
712-
impl DerefMut for TimelineInnerStateTransaction<'_> {
713-
fn deref_mut(&mut self) -> &mut Self::Target {
714-
self.meta
715-
}
716-
}
717-
718704
#[derive(Debug)]
719705
pub(in crate::timeline) struct TimelineInnerMetadata {
720706
/// List of all the events as received in the timeline, even the ones that

crates/matrix-sdk-ui/src/timeline/read_receipts.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -446,6 +446,7 @@ impl TimelineInnerStateTransaction<'_> {
446446
pub(super) fn maybe_update_read_receipts_of_prev_event(&mut self, event_id: &EventId) {
447447
// Find the previous visible event, if there is one.
448448
let Some(prev_event_meta) = self
449+
.meta
449450
.all_events
450451
.iter()
451452
.rev()
@@ -474,9 +475,9 @@ impl TimelineInnerStateTransaction<'_> {
474475
return;
475476
};
476477

477-
let read_receipts = self.read_receipts.compute_event_receipts(
478+
let read_receipts = self.meta.read_receipts.compute_event_receipts(
478479
&remote_prev_event_item.event_id,
479-
&self.all_events,
480+
&self.meta.all_events,
480481
false,
481482
);
482483

0 commit comments

Comments
 (0)