fix: Receipts disappear after reaction

This commit is contained in:
Christian Kußowski 2026-02-15 11:48:38 +01:00
parent 727e442c94
commit 193d68a525
No known key found for this signature in database
GPG key ID: E067ECD60F1A0652
2 changed files with 16 additions and 10 deletions

View file

@ -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),
],
);
}

View file

@ -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,