diff --git a/lib/src/views/chats/chat_messages_components/chat_message_entry_components/chat_text_response_columns.dart b/lib/src/views/chats/chat_messages_components/chat_message_entry_components/chat_text_response_columns.dart index 8f08ae7..5422b19 100644 --- a/lib/src/views/chats/chat_messages_components/chat_message_entry_components/chat_text_response_columns.dart +++ b/lib/src/views/chats/chat_messages_components/chat_message_entry_components/chat_text_response_columns.dart @@ -36,10 +36,10 @@ class ChatTextResponseColumns extends StatelessWidget { child: Text( content.text, style: TextStyle(fontSize: 14), - textAlign: right ? TextAlign.left : TextAlign.right, + textAlign: right ? TextAlign.right : TextAlign.left, )), ]; - if (!right) { + if (right) { entries = entries.reversed.toList(); } @@ -72,7 +72,7 @@ class ChatTextResponseColumns extends StatelessWidget { return Column( crossAxisAlignment: - right ? CrossAxisAlignment.start : CrossAxisAlignment.end, + right ? CrossAxisAlignment.end : CrossAxisAlignment.start, children: children, ); } diff --git a/lib/src/views/chats/chat_messages_view.dart b/lib/src/views/chats/chat_messages_view.dart index 130722a..f4e6a6c 100644 --- a/lib/src/views/chats/chat_messages_view.dart +++ b/lib/src/views/chats/chat_messages_view.dart @@ -273,28 +273,34 @@ class _ChatMessagesViewState extends State { index -= 1; double size = 44; if (messages[index].kind == MessageKind.textMessage) { - MessageContent? content = MessageContent.fromJson( - messages[index].kind, + TextMessageContent? content = TextMessageContent.fromJson( jsonDecode(messages[index].contentJson!)); - if (content is TextMessageContent) { - if (EmojiAnimation.supported(content.text)) { - size = 95; - } else { - size = 11 + - calculateNumberOfLines(content.text, - MediaQuery.of(context).size.width * 0.8) * - 27; - } + if (EmojiAnimation.supported(content.text)) { + size = 95; + } else { + size = 11 + + calculateNumberOfLines(content.text, + MediaQuery.of(context).size.width * 0.8, 17) * + 27; } } if (messages[index].mediaStored) { size = 271; } - // add reaction size - size += (textReactionsToMessageId[messages[index].messageId] - ?.length ?? - 0) * - 27; + final reactions = + textReactionsToMessageId[messages[index].messageId]; + if (reactions != null && reactions.isNotEmpty) { + for (final reaction in reactions) { + if (reaction.kind == MessageKind.textMessage) { + TextMessageContent? content = + TextMessageContent.fromJson( + jsonDecode(reaction.contentJson!)); + size += calculateNumberOfLines(content.text, + MediaQuery.of(context).size.width * 0.5, 14) * + 27; + } + } + } if (!isLastMessageFromSameUser(messages, index)) { size += 20; @@ -418,12 +424,14 @@ bool isLastMessageFromSameUser(List messages, int index) { currentMessage.messageOtherId != null); } -double calculateNumberOfLines(String text, double width) { +double calculateNumberOfLines(String text, double width, double fontSize) { final textPainter = TextPainter( - text: TextSpan(text: text, style: TextStyle(fontSize: 17)), - // maxLines: null, + text: TextSpan( + text: text, + style: TextStyle(fontSize: fontSize), + ), textDirection: TextDirection.ltr, ); - textPainter.layout(maxWidth: (width - 20)); + textPainter.layout(maxWidth: (width - 30)); return textPainter.computeLineMetrics().length.toDouble(); }