diff --git a/commet/lib/ui/molecules/timeline_events/events/timeline_event_view_message.dart b/commet/lib/ui/molecules/timeline_events/events/timeline_event_view_message.dart index c1310f73..4b29f915 100644 --- a/commet/lib/ui/molecules/timeline_events/events/timeline_event_view_message.dart +++ b/commet/lib/ui/molecules/timeline_events/events/timeline_event_view_message.dart @@ -59,6 +59,8 @@ class _TimelineEventViewMessageState extends State int index = 0; + late bool edited; + @override void initState() { currentUserIdentifier = widget.timeline.client.self!.identifier; @@ -77,6 +79,7 @@ class _TimelineEventViewMessageState extends State showSender: showSender, formattedContent: formattedContent, timestamp: timestampToString(sentTime), + edited: edited, attachments: attachments != null ? TimelineEventViewAttachments(attachments: attachments!) : null, @@ -125,6 +128,7 @@ class _TimelineEventViewMessageState extends State showSender = shouldShowSender(eventIndex); + edited = event.edited; if (event.type == EventType.encrypted) { formattedContent = tiamat.Text.error(messageFailedToDecrypt); } diff --git a/commet/lib/ui/molecules/timeline_events/layouts/timeline_event_layout_message.dart b/commet/lib/ui/molecules/timeline_events/layouts/timeline_event_layout_message.dart index d4dc03a3..d85845c1 100644 --- a/commet/lib/ui/molecules/timeline_events/layouts/timeline_event_layout_message.dart +++ b/commet/lib/ui/molecules/timeline_events/layouts/timeline_event_layout_message.dart @@ -3,6 +3,7 @@ import 'package:commet/diagnostic/benchmark_values.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; +import 'package:intl/intl.dart'; import 'package:tiamat/tiamat.dart' as tiamat; class TimelineEventLayoutMessage extends StatelessWidget { @@ -17,6 +18,7 @@ class TimelineEventLayoutMessage extends StatelessWidget { this.reactions, this.timestamp, this.urlPreviews, + this.edited = false, this.avatarSize = 32, this.showSender = true}); final String senderName; @@ -28,10 +30,15 @@ class TimelineEventLayoutMessage extends StatelessWidget { final Widget? reactions; final Widget? urlPreviews; final bool showSender; + final bool edited; final String? timestamp; final double avatarSize; + String get messageEditedMarker => Intl.message("(Edited)", + name: "messageEditedMarker", + desc: "Short text to mark that a message has been edited"); + @override Widget build(BuildContext context) { BenchmarkValues.numTimelineMessageBodyBuilt += 1; @@ -63,6 +70,7 @@ class TimelineEventLayoutMessage extends StatelessWidget { ), if (formattedContent != null) RepaintBoundary(child: formattedContent!), + if (edited) tiamat.Text.labelLow(messageEditedMarker), if (attachments != null) attachments!, if (urlPreviews != null) urlPreviews!, if (reactions != null)