fix: Scroll to event missing the position

This commit is contained in:
Krille 2024-07-28 09:52:27 +02:00
commit 8ae8dbe45e
No known key found for this signature in database
GPG key ID: E067ECD60F1A0652

View file

@ -29,6 +29,7 @@ import 'package:fluffychat/pages/chat/recording_dialog.dart';
import 'package:fluffychat/pages/chat_details/chat_details.dart'; import 'package:fluffychat/pages/chat_details/chat_details.dart';
import 'package:fluffychat/utils/error_reporter.dart'; import 'package:fluffychat/utils/error_reporter.dart';
import 'package:fluffychat/utils/matrix_sdk_extensions/event_extension.dart'; import 'package:fluffychat/utils/matrix_sdk_extensions/event_extension.dart';
import 'package:fluffychat/utils/matrix_sdk_extensions/filtered_timeline_extension.dart';
import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart';
import 'package:fluffychat/utils/platform_infos.dart'; import 'package:fluffychat/utils/platform_infos.dart';
import 'package:fluffychat/widgets/app_lock.dart'; import 'package:fluffychat/widgets/app_lock.dart';
@ -292,7 +293,7 @@ class ChatController extends State<ChatPageWithRoom>
if (timeline?.events.any((event) => event.eventId == fullyRead) ?? if (timeline?.events.any((event) => event.eventId == fullyRead) ??
false) { false) {
Logs().v('Scroll up to visible event', fullyRead); Logs().v('Scroll up to visible event', fullyRead);
setReadMarker(); scrollToEventId(fullyRead);
return; return;
} }
if (!mounted) return; if (!mounted) return;
@ -901,7 +902,10 @@ class ChatController extends State<ChatPageWithRoom>
} }
void scrollToEventId(String eventId) async { void scrollToEventId(String eventId) async {
final eventIndex = timeline!.events.indexWhere((e) => e.eventId == eventId); final eventIndex = timeline!.events
.where((event) => event.isVisibleInGui)
.toList()
.indexWhere((e) => e.eventId == eventId);
if (eventIndex == -1) { if (eventIndex == -1) {
setState(() { setState(() {
timeline = null; timeline = null;
@ -921,7 +925,8 @@ class ChatController extends State<ChatPageWithRoom>
scrollToEventIdMarker = eventId; scrollToEventIdMarker = eventId;
}); });
await scrollController.scrollToIndex( await scrollController.scrollToIndex(
eventIndex, eventIndex + 1,
duration: FluffyThemes.animationDuration,
preferPosition: AutoScrollPosition.middle, preferPosition: AutoScrollPosition.middle,
); );
_updateScrollController(); _updateScrollController();