From 0ec0f216e278329c8a87ea4026f86d1e7320a30b Mon Sep 17 00:00:00 2001 From: Pierre HUBERT Date: Thu, 16 Apr 2020 15:10:47 +0200 Subject: [PATCH] Use DisplayString for messages --- lib/helpers/conversations_helper.dart | 3 ++- lib/models/conversation_message.dart | 12 +++++++----- lib/ui/screens/conversation_screen.dart | 2 +- lib/ui/tiles/conversation_message_tile.dart | 10 +++++----- lib/ui/widgets/text_widget.dart | 10 +++++++--- 5 files changed, 22 insertions(+), 15 deletions(-) diff --git a/lib/helpers/conversations_helper.dart b/lib/helpers/conversations_helper.dart index 7299e06..5547471 100644 --- a/lib/helpers/conversations_helper.dart +++ b/lib/helpers/conversations_helper.dart @@ -8,6 +8,7 @@ import 'package:comunic/models/api_request.dart'; import 'package:comunic/models/api_response.dart'; import 'package:comunic/models/conversation.dart'; import 'package:comunic/models/conversation_message.dart'; +import 'package:comunic/models/displayed_content.dart'; import 'package:comunic/models/new_conversation_message.dart'; import 'package:comunic/utils/account_utils.dart'; import 'package:meta/meta.dart'; @@ -365,7 +366,7 @@ class ConversationsHelper { conversationID: conversationID, userID: map["ID_user"], timeInsert: map["time_insert"], - message: map["message"], + message: DisplayedString(map["message"]), imageURL: map["image_path"], ); } diff --git a/lib/models/conversation_message.dart b/lib/models/conversation_message.dart index b31cddf..c21c64b 100644 --- a/lib/models/conversation_message.dart +++ b/lib/models/conversation_message.dart @@ -1,5 +1,6 @@ import 'package:comunic/helpers/database/database_contract.dart'; import 'package:comunic/models/cache_model.dart'; +import 'package:comunic/models/displayed_content.dart'; import 'package:comunic/utils/account_utils.dart' as account; import 'package:meta/meta.dart'; @@ -12,7 +13,7 @@ class ConversationMessage extends CacheModel implements Comparable { final int conversationID; final int userID; final int timeInsert; - final String message; + final DisplayedString message; final String imageURL; const ConversationMessage({ @@ -30,7 +31,7 @@ class ConversationMessage extends CacheModel implements Comparable { DateTime get date => DateTime.fromMillisecondsSinceEpoch(timeInsert * 1000); - bool get hasMessage => message != null && message.length > 0; + bool get hasMessage => !message.isNull && message.length > 0; bool get hasImage => imageURL != null && imageURL != "null"; @@ -48,17 +49,18 @@ class ConversationMessage extends CacheModel implements Comparable { ConversationsMessagesTableContract.C_CONVERSATION_ID: conversationID, ConversationsMessagesTableContract.C_USER_ID: userID, ConversationsMessagesTableContract.C_TIME_INSERT: timeInsert, - ConversationsMessagesTableContract.C_MESSAGE: message, + ConversationsMessagesTableContract.C_MESSAGE: message.content, ConversationsMessagesTableContract.C_IMAGE_URL: imageURL }; } ConversationMessage.fromMap(Map map) : id = map[ConversationsMessagesTableContract.C_ID], - conversationID = map[ConversationsMessagesTableContract.C_CONVERSATION_ID], + conversationID = + map[ConversationsMessagesTableContract.C_CONVERSATION_ID], userID = map[ConversationsMessagesTableContract.C_USER_ID], timeInsert = map[ConversationsMessagesTableContract.C_TIME_INSERT], - message = map[ConversationsMessagesTableContract.C_MESSAGE], + message = DisplayedString(map[ConversationsMessagesTableContract.C_MESSAGE]), imageURL = map[ConversationsMessagesTableContract.C_IMAGE_URL], super.fromMap(map); } diff --git a/lib/ui/screens/conversation_screen.dart b/lib/ui/screens/conversation_screen.dart index 70caac4..67a51d8 100644 --- a/lib/ui/screens/conversation_screen.dart +++ b/lib/ui/screens/conversation_screen.dart @@ -392,7 +392,7 @@ class _ConversationScreenState extends State { context: context, title: tr("Update message"), message: tr("Please enter new message content:"), - defaultValue: message.message, + defaultValue: message.message.content, hint: tr("New message")); if (newContent == null) return; diff --git a/lib/ui/tiles/conversation_message_tile.dart b/lib/ui/tiles/conversation_message_tile.dart index 905587d..39f7959 100644 --- a/lib/ui/tiles/conversation_message_tile.dart +++ b/lib/ui/tiles/conversation_message_tile.dart @@ -2,7 +2,7 @@ import 'package:comunic/models/conversation_message.dart'; import 'package:comunic/models/user.dart'; import 'package:comunic/ui/widgets/account_image_widget.dart'; import 'package:comunic/ui/widgets/network_image_widget.dart'; -import 'package:comunic/ui/widgets/text_rich_content_widget.dart'; +import 'package:comunic/ui/widgets/text_widget.dart'; import 'package:comunic/utils/date_utils.dart'; import 'package:comunic/utils/intl_utils.dart'; import 'package:comunic/utils/ui_utils.dart'; @@ -124,8 +124,8 @@ class ConversationMessageTile extends StatelessWidget { width: 200.0, alignment: Alignment.centerRight, child: Container( - child: TextRichContentWidget( - message.message, + child: TextWidget( + content: message.message, textAlign: TextAlign.justify, style: TextStyle(color: Colors.white), ), @@ -199,8 +199,8 @@ class ConversationMessageTile extends StatelessWidget { width: 200.0, alignment: Alignment.centerLeft, child: Container( - child: TextRichContentWidget( - message.message, + child: TextWidget( + content: message.message, textAlign: TextAlign.justify, style: TextStyle( color: darkTheme() diff --git a/lib/ui/widgets/text_widget.dart b/lib/ui/widgets/text_widget.dart index 8ebddcb..da8fd7f 100644 --- a/lib/ui/widgets/text_widget.dart +++ b/lib/ui/widgets/text_widget.dart @@ -15,11 +15,13 @@ class TextWidget extends StatelessWidget { final DisplayedString content; final bool parseBBcode; final TextStyle style; + final TextAlign textAlign; const TextWidget({ Key key, @required this.content, this.parseBBcode = false, + this.textAlign = TextAlign.start, this.style, }) : assert(content != null), assert(parseBBcode != null), @@ -40,6 +42,7 @@ class TextWidget extends StatelessWidget { // Just parse link return RichText( + textAlign: textAlign, text: TextSpan(children: _parseLinks(context, content, style)), ); } @@ -74,7 +77,7 @@ class TextWidget extends StatelessWidget { child: InkWell( child: Text( word, - style: style.copyWith(color: Colors.blueAccent), + style: style.copyWith(color: Colors.indigo), ), onTap: () => launch(word), ), @@ -93,7 +96,7 @@ class TextWidget extends StatelessWidget { child: InkWell( child: Text( word, - style: style.copyWith(color: Colors.blueAccent), + style: style.copyWith(color: Colors.indigo), ), onTap: () => openVirtualDirectory(context, word), ), @@ -110,7 +113,8 @@ class TextWidget extends StatelessWidget { } } - if (buff.isNotEmpty) changeWordType(); + if (buff.isNotEmpty && (buff.length > 1 || buff.toString() != " ")) + changeWordType(); return list; }