chore: Follow up set read marker logic
This commit is contained in:
parent
aa3de2816b
commit
eae7db7d71
1 changed files with 1 additions and 19 deletions
|
|
@ -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…
Add table
Add a link
Reference in a new issue