fix: make overlay accurate for message with edits and replies (#1338)

pull/1544/head
ggurdin 11 months ago committed by GitHub
parent 6f06cfd911
commit dd2ccccaad
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -332,7 +332,7 @@ class MessageContent extends StatelessWidget {
} }
controller.showToolbar( controller.showToolbar(
event, pangeaMessageEvent!.event,
pangeaMessageEvent: pangeaMessageEvent, pangeaMessageEvent: pangeaMessageEvent,
selectedToken: token, selectedToken: token,
); );

@ -1,6 +1,7 @@
import 'package:fluffychat/config/app_config.dart'; import 'package:fluffychat/config/app_config.dart';
import 'package:fluffychat/pages/chat/chat.dart'; import 'package:fluffychat/pages/chat/chat.dart';
import 'package:fluffychat/pages/chat/events/message_content.dart'; import 'package:fluffychat/pages/chat/events/message_content.dart';
import 'package:fluffychat/pages/chat/events/reply_content.dart';
import 'package:fluffychat/pangea/matrix_event_wrappers/pangea_message_event.dart'; import 'package:fluffychat/pangea/matrix_event_wrappers/pangea_message_event.dart';
import 'package:fluffychat/pangea/widgets/chat/message_selection_overlay.dart'; import 'package:fluffychat/pangea/widgets/chat/message_selection_overlay.dart';
import 'package:fluffychat/utils/date_time_extension.dart'; import 'package:fluffychat/utils/date_time_extension.dart';
@ -93,6 +94,9 @@ class OverlayMessage extends StatelessWidget {
MessageTypes.Audio, MessageTypes.Audio,
}.contains(event.messageType); }.contains(event.messageType);
final textColor =
ownMessage ? theme.colorScheme.onPrimary : theme.colorScheme.onSurface;
return Material( return Material(
color: color, color: color,
clipBehavior: Clip.antiAlias, clipBehavior: Clip.antiAlias,
@ -113,18 +117,98 @@ class OverlayMessage extends StatelessWidget {
vertical: 8, vertical: 8,
), ),
width: messageWidth, width: messageWidth,
child: MessageContent( child: Column(
event, mainAxisSize: MainAxisSize.min,
textColor: ownMessage crossAxisAlignment: CrossAxisAlignment.start,
? theme.colorScheme.onPrimary children: <Widget>[
: theme.colorScheme.onSurface, if (event.relationshipType == RelationshipTypes.reply)
pangeaMessageEvent: pangeaMessageEvent, FutureBuilder<Event?>(
immersionMode: immersionMode, future: event.getReplyEvent(
overlayController: overlayController, timeline,
controller: controller, ),
nextEvent: nextEvent, builder: (
prevEvent: prevEvent, BuildContext context,
borderRadius: borderRadius, snapshot,
) {
final replyEvent = snapshot.hasData
? snapshot.data!
: Event(
eventId: event.relationshipEventId!,
content: {
'msgtype': 'm.text',
'body': '...',
},
senderId: event.senderId,
type: 'm.room.message',
room: event.room,
status: EventStatus.sent,
originServerTs: DateTime.now(),
);
return Padding(
padding: const EdgeInsets.only(
bottom: 4.0,
),
child: InkWell(
borderRadius: ReplyContent.borderRadius,
onTap: () => controller.scrollToEventId(
replyEvent.eventId,
),
child: AbsorbPointer(
child: ReplyContent(
replyEvent,
ownMessage: ownMessage,
timeline: timeline,
),
),
),
);
},
),
MessageContent(
event,
textColor: textColor,
pangeaMessageEvent: pangeaMessageEvent,
immersionMode: immersionMode,
overlayController: overlayController,
controller: controller,
nextEvent: nextEvent,
prevEvent: prevEvent,
borderRadius: borderRadius,
),
if (event.hasAggregatedEvents(
timeline,
RelationshipTypes.edit,
))
Padding(
padding: const EdgeInsets.only(
top: 4.0,
),
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
if (event.hasAggregatedEvents(
timeline,
RelationshipTypes.edit,
)) ...[
Icon(
Icons.edit_outlined,
color: textColor.withAlpha(164),
size: 14,
),
Text(
' - ${displayEvent.originServerTs.localizedTimeShort(context)}',
style: TextStyle(
color: textColor.withAlpha(
164,
),
fontSize: 12,
),
),
],
],
),
),
],
), ),
), ),
), ),

Loading…
Cancel
Save