From a551ab445b36a582a4c3e004e93b4b90fc25ac37 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Thu, 3 Dec 2020 12:08:20 +0100 Subject: [PATCH] fix emoji only messages --- lib/src/message_widget.dart | 52 ++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 29 deletions(-) diff --git a/lib/src/message_widget.dart b/lib/src/message_widget.dart index 1ba4db87..94d9afd3 100644 --- a/lib/src/message_widget.dart +++ b/lib/src/message_widget.dart @@ -223,9 +223,10 @@ class _MessageWidgetState extends State { widget.message.attachments?.any((element) => element.type == 'giphy') == true; - var user = StreamChat.of(context).user; + final isOnlyEmoji = + widget.message.text.characters.every((c) => Emoji.byChar(c) != null); - bool hasFiles = + final hasFiles = widget.message.attachments.any((element) => element.type == 'file'); return Portal( @@ -304,16 +305,20 @@ class _MessageWidgetState extends State { clipBehavior: Clip.antiAlias, shape: widget.shape ?? RoundedRectangleBorder( - side: widget.borderSide ?? - BorderSide( - color: Theme.of(context) - .brightness == - Brightness.dark - ? Colors.white - .withAlpha(24) - : Colors.black - .withAlpha(24), - ), + side: isOnlyEmoji + ? BorderSide.none + : widget.borderSide ?? + BorderSide( + color: Theme.of(context) + .brightness == + Brightness + .dark + ? Colors.white + .withAlpha(24) + : Colors.black + .withAlpha( + 24), + ), borderRadius: widget .borderRadiusGeometry ?? BorderRadius.zero, @@ -821,16 +826,6 @@ class _MessageWidgetState extends State { return SizedBox(); } - Widget _wrapTextInBubble({ - BuildContext context, - Widget child, - }) { - return Container( - color: _getBackgroundColor(), - child: child, - ); - } - Widget _buildTextBubble(BuildContext context) { final isOnlyEmoji = widget.message.text.characters.every((c) => Emoji.byChar(c) != null); @@ -871,13 +866,6 @@ class _MessageWidgetState extends State { ], ), ); - - if (!isOnlyEmoji) { - child = _wrapTextInBubble( - context: context, - child: child, - ); - } return GestureDetector( onTap: () => retryMessage(context), onLongPress: () => onLongPress(context), @@ -886,6 +874,9 @@ class _MessageWidgetState extends State { } Color _getBackgroundColor() { + final isOnlyEmoji = + widget.message.text.characters.every((c) => Emoji.byChar(c) != null); + if ((widget.message.status == MessageSendingStatus.FAILED || widget.message.status == MessageSendingStatus.FAILED_UPDATE || widget.message.status == MessageSendingStatus.FAILED_DELETE)) { @@ -898,6 +889,9 @@ class _MessageWidgetState extends State { return Color(0xFFE9F2FF); } + if (isOnlyEmoji) { + return Colors.transparent; + } return widget.messageTheme.messageBackgroundColor; }