@@ -61,7 +61,8 @@ pub(super) use self::{
6161use super :: {
6262 DateDividerMode , EmbeddedEvent , Error , EventSendState , EventTimelineItem , InReplyToDetails ,
6363 MediaUploadProgress , PaginationError , Profile , TimelineDetails , TimelineEventItemId ,
64- TimelineFocus , TimelineItem , TimelineItemContent , TimelineItemKind , VirtualTimelineItem ,
64+ TimelineFocus , TimelineItem , TimelineItemContent , TimelineItemKind ,
65+ TimelineReadReceiptTracking , VirtualTimelineItem ,
6566 algorithms:: { rfind_event_by_id, rfind_event_item} ,
6667 event_item:: { ReactionStatus , RemoteEventOrigin } ,
6768 item:: TimelineUniqueId ,
@@ -265,11 +266,9 @@ pub(super) struct TimelineController<P: RoomDataProvider = Room> {
265266
266267#[ derive( Clone ) ]
267268pub ( super ) struct TimelineSettings {
268- /// Should the read receipts and read markers be handled?
269- pub ( super ) track_read_receipts : bool ,
270-
271- /// Whether state events can show read receipts.
272- pub ( super ) state_events_can_show_read_receipts : bool ,
269+ /// Should the read receipts and read markers be handled and on which event
270+ /// types?
271+ pub ( super ) track_read_receipts : TimelineReadReceiptTracking ,
273272
274273 /// Event filter that controls what's rendered as a timeline item (and thus
275274 /// what can carry read receipts).
@@ -287,7 +286,6 @@ impl fmt::Debug for TimelineSettings {
287286 fn fmt ( & self , f : & mut fmt:: Formatter < ' _ > ) -> fmt:: Result {
288287 f. debug_struct ( "TimelineSettings" )
289288 . field ( "track_read_receipts" , & self . track_read_receipts )
290- . field ( "state_events_can_show_read_receipts" , & self . state_events_can_show_read_receipts )
291289 . field ( "add_failed_to_parse" , & self . add_failed_to_parse )
292290 . finish_non_exhaustive ( )
293291 }
@@ -296,8 +294,7 @@ impl fmt::Debug for TimelineSettings {
296294impl Default for TimelineSettings {
297295 fn default ( ) -> Self {
298296 Self {
299- track_read_receipts : false ,
300- state_events_can_show_read_receipts : true ,
297+ track_read_receipts : TimelineReadReceiptTracking :: Disabled ,
301298 event_filter : Arc :: new ( default_event_filter) ,
302299 add_failed_to_parse : true ,
303300 date_divider_mode : DateDividerMode :: Daily ,
@@ -986,8 +983,8 @@ impl<P: RoomDataProvider> TimelineController<P> {
986983 {
987984 let mut state = self . state . write ( ) . await ;
988985
989- let track_read_markers = self . settings . track_read_receipts ;
990- if track_read_markers {
986+ let track_read_markers = & self . settings . track_read_receipts ;
987+ if track_read_markers. is_enabled ( ) {
991988 state. populate_initial_user_receipt ( & self . room_data_provider , ReceiptType :: Read ) . await ;
992989 state
993990 . populate_initial_user_receipt ( & self . room_data_provider , ReceiptType :: ReadPrivate )
@@ -1011,7 +1008,7 @@ impl<P: RoomDataProvider> TimelineController<P> {
10111008 . await ;
10121009 }
10131010
1014- if track_read_markers {
1011+ if track_read_markers. is_enabled ( ) {
10151012 if let Some ( fully_read_event_id) =
10161013 self . room_data_provider . load_fully_read_marker ( ) . await
10171014 {
0 commit comments