From 7ca2ea7140d9d1e80e3a67535a6253b1e595365b Mon Sep 17 00:00:00 2001 From: ggurdin <46800240+ggurdin@users.noreply.github.com> Date: Tue, 6 May 2025 12:07:14 -0400 Subject: [PATCH] chore: remove message bubble from emoji messages (#2686) --- lib/pages/chat/chat.dart | 5 +++- lib/pages/chat/events/message.dart | 1 + .../common/widgets/pressable_button.dart | 6 ++++ .../toolbar/widgets/overlay_message.dart | 28 +++++++++++-------- 4 files changed, 27 insertions(+), 13 deletions(-) diff --git a/lib/pages/chat/chat.dart b/lib/pages/chat/chat.dart index 9951cdbbf..754a9df95 100644 --- a/lib/pages/chat/chat.dart +++ b/lib/pages/chat/chat.dart @@ -1840,7 +1840,10 @@ class ChatController extends State // #Pangea String? get buttonEventID => timeline!.events .firstWhereOrNull( - (event) => event.isVisibleInGui && event.senderId != room.client.userID, + (event) => + event.isVisibleInGui && + event.senderId != room.client.userID && + !event.redacted, ) ?.eventId; diff --git a/lib/pages/chat/events/message.dart b/lib/pages/chat/events/message.dart index e64288309..be4e7fa5a 100644 --- a/lib/pages/chat/events/message.dart +++ b/lib/pages/chat/events/message.dart @@ -405,6 +405,7 @@ class Message extends StatelessWidget { showToolbar(pangeaMessageEvent); }, color: color, + visible: isButton && !noBubble, child: // Pangea# Container( diff --git a/lib/pangea/common/widgets/pressable_button.dart b/lib/pangea/common/widgets/pressable_button.dart index 20942140e..2b6eddd83 100644 --- a/lib/pangea/common/widgets/pressable_button.dart +++ b/lib/pangea/common/widgets/pressable_button.dart @@ -18,6 +18,7 @@ class PressableButton extends StatefulWidget { final bool playSound; final double colorFactor; + final bool visible; const PressableButton({ required this.borderRadius, @@ -29,6 +30,7 @@ class PressableButton extends StatefulWidget { this.triggerAnimation, this.playSound = false, this.colorFactor = 0.3, + this.visible = true, super.key, }); @@ -135,6 +137,10 @@ class PressableButtonState extends State @override Widget build(BuildContext context) { + if (!widget.visible) { + return widget.child; + } + return MouseRegion( cursor: SystemMouseCursors.click, child: GestureDetector( diff --git a/lib/pangea/toolbar/widgets/overlay_message.dart b/lib/pangea/toolbar/widgets/overlay_message.dart index 846225a03..0b2a7de93 100644 --- a/lib/pangea/toolbar/widgets/overlay_message.dart +++ b/lib/pangea/toolbar/widgets/overlay_message.dart @@ -13,6 +13,7 @@ import 'package:fluffychat/pangea/toolbar/enums/reading_assistance_mode_enum.dar import 'package:fluffychat/pangea/toolbar/widgets/message_selection_overlay.dart'; import 'package:fluffychat/pangea/toolbar/widgets/message_speech_to_text_card.dart'; import 'package:fluffychat/utils/date_time_extension.dart'; +import 'package:fluffychat/utils/file_description.dart'; import 'package:fluffychat/widgets/matrix.dart'; // @ggurdin be great to explain the need/function of a widget like this @@ -108,12 +109,18 @@ class OverlayMessage extends StatelessWidget { : theme.colorScheme.primary; } - final noBubble = { - MessageTypes.Video, - MessageTypes.Image, - MessageTypes.Sticker, - }.contains(event.messageType) && - !event.redacted; + final noBubble = ({ + MessageTypes.Video, + MessageTypes.Image, + MessageTypes.Sticker, + }.contains(event.messageType) && + event.fileDescription == null && + !event.redacted) || + (event.messageType == MessageTypes.Text && + event.relationshipType == null && + event.onlyEmotes && + event.numberEmotes > 0 && + event.numberEmotes <= 3); final noPadding = { MessageTypes.File, MessageTypes.Audio, @@ -254,15 +261,12 @@ class OverlayMessage extends StatelessWidget { ); return Material( - color: color, - clipBehavior: Clip.antiAlias, - shape: RoundedRectangleBorder( - borderRadius: borderRadius, - ), + type: MaterialType.transparency, child: Container( + clipBehavior: Clip.antiAlias, decoration: BoxDecoration( + color: noBubble ? Colors.transparent : color, borderRadius: borderRadius, - color: color, ), child: Column( crossAxisAlignment: CrossAxisAlignment.start,