diff --git a/lib/pages/chat/chat_event_list.dart b/lib/pages/chat/chat_event_list.dart index a6898f517..4c7adfad6 100644 --- a/lib/pages/chat/chat_event_list.dart +++ b/lib/pages/chat/chat_event_list.dart @@ -79,7 +79,10 @@ class ChatEventList extends StatelessWidget { } return Column( mainAxisSize: .min, - children: [SeenByRow(controller), TypingIndicators(controller)], + children: [ + SeenByRow(timeline: timeline, event: events.first), + TypingIndicators(controller), + ], ); } diff --git a/lib/pages/chat/seen_by_row.dart b/lib/pages/chat/seen_by_row.dart index 3f2190997..1cce7efb7 100644 --- a/lib/pages/chat/seen_by_row.dart +++ b/lib/pages/chat/seen_by_row.dart @@ -1,14 +1,16 @@ import 'package:flutter/material.dart'; +import 'package:matrix/matrix.dart'; + import 'package:fluffychat/config/themes.dart'; -import 'package:fluffychat/pages/chat/chat.dart'; import 'package:fluffychat/utils/room_status_extension.dart'; import 'package:fluffychat/widgets/avatar.dart'; import 'package:fluffychat/widgets/matrix.dart'; class SeenByRow extends StatelessWidget { - final ChatController controller; - const SeenByRow(this.controller, {super.key}); + final Timeline timeline; + final Event event; + const SeenByRow({super.key, required this.timeline, required this.event}); @override Widget build(BuildContext context) { @@ -16,16 +18,17 @@ class SeenByRow extends StatelessWidget { const maxAvatars = 7; return StreamBuilder( - stream: controller.room.client.onSync.stream.where( + stream: timeline.room.client.onSync.stream.where( (syncUpdate) => - syncUpdate.rooms?.join?[controller.room.id]?.ephemeral?.any( + syncUpdate.rooms?.join?[timeline.room.id]?.ephemeral?.any( (ephemeral) => ephemeral.type == 'm.receipt', ) ?? false, ), builder: (context, asyncSnapshot) { - final seenByUsers = controller.room.getSeenByUsers( - controller.timeline!, + final seenByUsers = timeline.room.getSeenByUsers( + timeline, + eventId: event.eventId, ); return Container( width: double.infinity, @@ -40,8 +43,8 @@ class SeenByRow extends StatelessWidget { : FluffyThemes.animationDuration, curve: FluffyThemes.animationCurve, alignment: - controller.timeline!.events.isNotEmpty && - controller.timeline!.events.first.senderId == + timeline.events.isNotEmpty && + timeline.events.first.senderId == Matrix.of(context).client.userID ? Alignment.topRight : Alignment.topLeft,