chore: Follow up set read marker logic

pull/1298/head
krille-chan 1 year ago
parent aa3de2816b
commit eae7db7d71
No known key found for this signature in database

@ -332,6 +332,7 @@ class ChatController extends State<ChatPageWithRoom>
void updateView() { void updateView() {
if (!mounted) return; if (!mounted) return;
setReadMarker();
setState(() {}); setState(() {});
} }
@ -340,18 +341,10 @@ class ChatController extends State<ChatPageWithRoom>
int? animateInEventIndex; int? animateInEventIndex;
void onInsert(int i) { void onInsert(int i) {
onChange(i);
// setState will be called by updateView() anyway // setState will be called by updateView() anyway
animateInEventIndex = i; 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<void> _getTimeline({ Future<void> _getTimeline({
String? eventContextId, String? eventContextId,
}) async { }) async {
@ -367,7 +360,6 @@ class ChatController extends State<ChatPageWithRoom>
onUpdate: updateView, onUpdate: updateView,
eventContextId: eventContextId, eventContextId: eventContextId,
onInsert: onInsert, onInsert: onInsert,
onChange: onChange,
); );
} catch (e, s) { } catch (e, s) {
Logs().w('Unable to load timeline on event ID $eventContextId', e, s); Logs().w('Unable to load timeline on event ID $eventContextId', e, s);
@ -375,7 +367,6 @@ class ChatController extends State<ChatPageWithRoom>
timeline = await room.getTimeline( timeline = await room.getTimeline(
onUpdate: updateView, onUpdate: updateView,
onInsert: onInsert, onInsert: onInsert,
onChange: onChange,
); );
if (!mounted) return; if (!mounted) return;
if (e is TimeoutException || e is IOException) { if (e is TimeoutException || e is IOException) {
@ -1385,12 +1376,3 @@ class ChatController extends State<ChatPageWithRoom>
} }
enum EmojiPickerType { reaction, keyboard } enum EmojiPickerType { reaction, keyboard }
extension on List<Event> {
int get firstIndexWhereNotError {
if (isEmpty) return 0;
final index = indexWhere((event) => !event.status.isError);
if (index == -1) return length;
return index;
}
}

Loading…
Cancel
Save