diff --git a/lib/pages/chat/chat.dart b/lib/pages/chat/chat.dart index 8dc0033aa..ebc60d662 100644 --- a/lib/pages/chat/chat.dart +++ b/lib/pages/chat/chat.dart @@ -332,6 +332,7 @@ class ChatController extends State void updateView() { if (!mounted) return; + setReadMarker(); setState(() {}); } @@ -340,18 +341,10 @@ class ChatController extends State int? animateInEventIndex; void onInsert(int i) { - onChange(i); // setState will be called by updateView() anyway animateInEventIndex = i; } - void onChange(int i) { - if (timeline?.events[i].status == EventStatus.synced) { - final index = timeline!.events.firstIndexWhereNotError; - if (i == index) setReadMarker(eventId: timeline?.events[i].eventId); - } - } - Future _getTimeline({ String? eventContextId, }) async { @@ -367,7 +360,6 @@ class ChatController extends State onUpdate: updateView, eventContextId: eventContextId, onInsert: onInsert, - onChange: onChange, ); } catch (e, s) { Logs().w('Unable to load timeline on event ID $eventContextId', e, s); @@ -375,7 +367,6 @@ class ChatController extends State timeline = await room.getTimeline( onUpdate: updateView, onInsert: onInsert, - onChange: onChange, ); if (!mounted) return; if (e is TimeoutException || e is IOException) { @@ -1385,12 +1376,3 @@ class ChatController extends State } enum EmojiPickerType { reaction, keyboard } - -extension on List { - int get firstIndexWhereNotError { - if (isEmpty) return 0; - final index = indexWhere((event) => !event.status.isError); - if (index == -1) return length; - return index; - } -}