fix: Scrolling in fragmented timeline

This commit is contained in:
Christian Kußowski 2025-12-06 10:19:57 +01:00
commit cacb944918
No known key found for this signature in database
GPG key ID: E067ECD60F1A0652
4 changed files with 45 additions and 43 deletions

View file

@ -224,9 +224,14 @@ class ChatController extends State<ChatPageWithRoom>
final timeline = this.timeline;
if (timeline == null) return;
Logs().v('Requesting future...');
final mostRecentEventId = timeline.events.first.eventId;
final mostRecentEvent = timeline.events.filterByVisibleInGui().firstOrNull;
await timeline.requestFuture(historyCount: _loadHistoryCount);
setReadMarker(eventId: mostRecentEventId);
if (mostRecentEvent != null) {
setReadMarker(eventId: mostRecentEvent.eventId);
}
}
void _updateScrollController() {
@ -241,11 +246,6 @@ class ChatController extends State<ChatPageWithRoom>
setState(() => _scrolledUp = false);
setReadMarker();
}
if (scrollController.position.pixels == 0 ||
scrollController.position.pixels == 64) {
requestFuture();
}
}
void _loadDraft() async {
@ -458,7 +458,7 @@ class ChatController extends State<ChatPageWithRoom>
void onInsert(int i) {
// setState will be called by updateView() anyway
animateInEventIndex = i;
if (i <= 5) animateInEventIndex = i;
}
Future<void> _getTimeline({String? eventContextId}) async {