mirror of
				https://gitlab.com/comunic/comunicmobile
				synced 2025-10-31 10:14:50 +00:00 
			
		
		
		
	Use DisplayString for messages
This commit is contained in:
		| @@ -8,6 +8,7 @@ import 'package:comunic/models/api_request.dart'; | |||||||
| import 'package:comunic/models/api_response.dart'; | import 'package:comunic/models/api_response.dart'; | ||||||
| import 'package:comunic/models/conversation.dart'; | import 'package:comunic/models/conversation.dart'; | ||||||
| import 'package:comunic/models/conversation_message.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/models/new_conversation_message.dart'; | ||||||
| import 'package:comunic/utils/account_utils.dart'; | import 'package:comunic/utils/account_utils.dart'; | ||||||
| import 'package:meta/meta.dart'; | import 'package:meta/meta.dart'; | ||||||
| @@ -365,7 +366,7 @@ class ConversationsHelper { | |||||||
|       conversationID: conversationID, |       conversationID: conversationID, | ||||||
|       userID: map["ID_user"], |       userID: map["ID_user"], | ||||||
|       timeInsert: map["time_insert"], |       timeInsert: map["time_insert"], | ||||||
|       message: map["message"], |       message: DisplayedString(map["message"]), | ||||||
|       imageURL: map["image_path"], |       imageURL: map["image_path"], | ||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
|   | |||||||
| @@ -1,5 +1,6 @@ | |||||||
| import 'package:comunic/helpers/database/database_contract.dart'; | import 'package:comunic/helpers/database/database_contract.dart'; | ||||||
| import 'package:comunic/models/cache_model.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:comunic/utils/account_utils.dart' as account; | ||||||
| import 'package:meta/meta.dart'; | import 'package:meta/meta.dart'; | ||||||
|  |  | ||||||
| @@ -12,7 +13,7 @@ class ConversationMessage extends CacheModel implements Comparable { | |||||||
|   final int conversationID; |   final int conversationID; | ||||||
|   final int userID; |   final int userID; | ||||||
|   final int timeInsert; |   final int timeInsert; | ||||||
|   final String message; |   final DisplayedString message; | ||||||
|   final String imageURL; |   final String imageURL; | ||||||
|  |  | ||||||
|   const ConversationMessage({ |   const ConversationMessage({ | ||||||
| @@ -30,7 +31,7 @@ class ConversationMessage extends CacheModel implements Comparable { | |||||||
|  |  | ||||||
|   DateTime get date => DateTime.fromMillisecondsSinceEpoch(timeInsert * 1000); |   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"; |   bool get hasImage => imageURL != null && imageURL != "null"; | ||||||
|  |  | ||||||
| @@ -48,17 +49,18 @@ class ConversationMessage extends CacheModel implements Comparable { | |||||||
|       ConversationsMessagesTableContract.C_CONVERSATION_ID: conversationID, |       ConversationsMessagesTableContract.C_CONVERSATION_ID: conversationID, | ||||||
|       ConversationsMessagesTableContract.C_USER_ID: userID, |       ConversationsMessagesTableContract.C_USER_ID: userID, | ||||||
|       ConversationsMessagesTableContract.C_TIME_INSERT: timeInsert, |       ConversationsMessagesTableContract.C_TIME_INSERT: timeInsert, | ||||||
|       ConversationsMessagesTableContract.C_MESSAGE: message, |       ConversationsMessagesTableContract.C_MESSAGE: message.content, | ||||||
|       ConversationsMessagesTableContract.C_IMAGE_URL: imageURL |       ConversationsMessagesTableContract.C_IMAGE_URL: imageURL | ||||||
|     }; |     }; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   ConversationMessage.fromMap(Map<String, dynamic> map) |   ConversationMessage.fromMap(Map<String, dynamic> map) | ||||||
|       : id = map[ConversationsMessagesTableContract.C_ID], |       : id = map[ConversationsMessagesTableContract.C_ID], | ||||||
|         conversationID = map[ConversationsMessagesTableContract.C_CONVERSATION_ID], |         conversationID = | ||||||
|  |             map[ConversationsMessagesTableContract.C_CONVERSATION_ID], | ||||||
|         userID = map[ConversationsMessagesTableContract.C_USER_ID], |         userID = map[ConversationsMessagesTableContract.C_USER_ID], | ||||||
|         timeInsert = map[ConversationsMessagesTableContract.C_TIME_INSERT], |         timeInsert = map[ConversationsMessagesTableContract.C_TIME_INSERT], | ||||||
|         message = map[ConversationsMessagesTableContract.C_MESSAGE], |         message = DisplayedString(map[ConversationsMessagesTableContract.C_MESSAGE]), | ||||||
|         imageURL = map[ConversationsMessagesTableContract.C_IMAGE_URL], |         imageURL = map[ConversationsMessagesTableContract.C_IMAGE_URL], | ||||||
|         super.fromMap(map); |         super.fromMap(map); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -392,7 +392,7 @@ class _ConversationScreenState extends State<ConversationScreen> { | |||||||
|         context: context, |         context: context, | ||||||
|         title: tr("Update message"), |         title: tr("Update message"), | ||||||
|         message: tr("Please enter new message content:"), |         message: tr("Please enter new message content:"), | ||||||
|         defaultValue: message.message, |         defaultValue: message.message.content, | ||||||
|         hint: tr("New message")); |         hint: tr("New message")); | ||||||
|  |  | ||||||
|     if (newContent == null) return; |     if (newContent == null) return; | ||||||
|   | |||||||
| @@ -2,7 +2,7 @@ import 'package:comunic/models/conversation_message.dart'; | |||||||
| import 'package:comunic/models/user.dart'; | import 'package:comunic/models/user.dart'; | ||||||
| import 'package:comunic/ui/widgets/account_image_widget.dart'; | import 'package:comunic/ui/widgets/account_image_widget.dart'; | ||||||
| import 'package:comunic/ui/widgets/network_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/date_utils.dart'; | ||||||
| import 'package:comunic/utils/intl_utils.dart'; | import 'package:comunic/utils/intl_utils.dart'; | ||||||
| import 'package:comunic/utils/ui_utils.dart'; | import 'package:comunic/utils/ui_utils.dart'; | ||||||
| @@ -124,8 +124,8 @@ class ConversationMessageTile extends StatelessWidget { | |||||||
|                                 width: 200.0, |                                 width: 200.0, | ||||||
|                                 alignment: Alignment.centerRight, |                                 alignment: Alignment.centerRight, | ||||||
|                                 child: Container( |                                 child: Container( | ||||||
|                                   child: TextRichContentWidget( |                                   child: TextWidget( | ||||||
|                                     message.message, |                                     content: message.message, | ||||||
|                                     textAlign: TextAlign.justify, |                                     textAlign: TextAlign.justify, | ||||||
|                                     style: TextStyle(color: Colors.white), |                                     style: TextStyle(color: Colors.white), | ||||||
|                                   ), |                                   ), | ||||||
| @@ -199,8 +199,8 @@ class ConversationMessageTile extends StatelessWidget { | |||||||
|                             width: 200.0, |                             width: 200.0, | ||||||
|                             alignment: Alignment.centerLeft, |                             alignment: Alignment.centerLeft, | ||||||
|                             child: Container( |                             child: Container( | ||||||
|                               child: TextRichContentWidget( |                               child: TextWidget( | ||||||
|                                 message.message, |                                 content: message.message, | ||||||
|                                 textAlign: TextAlign.justify, |                                 textAlign: TextAlign.justify, | ||||||
|                                 style: TextStyle( |                                 style: TextStyle( | ||||||
|                                     color: darkTheme() |                                     color: darkTheme() | ||||||
|   | |||||||
| @@ -15,11 +15,13 @@ class TextWidget extends StatelessWidget { | |||||||
|   final DisplayedString content; |   final DisplayedString content; | ||||||
|   final bool parseBBcode; |   final bool parseBBcode; | ||||||
|   final TextStyle style; |   final TextStyle style; | ||||||
|  |   final TextAlign textAlign; | ||||||
|  |  | ||||||
|   const TextWidget({ |   const TextWidget({ | ||||||
|     Key key, |     Key key, | ||||||
|     @required this.content, |     @required this.content, | ||||||
|     this.parseBBcode = false, |     this.parseBBcode = false, | ||||||
|  |     this.textAlign = TextAlign.start, | ||||||
|     this.style, |     this.style, | ||||||
|   })  : assert(content != null), |   })  : assert(content != null), | ||||||
|         assert(parseBBcode != null), |         assert(parseBBcode != null), | ||||||
| @@ -40,6 +42,7 @@ class TextWidget extends StatelessWidget { | |||||||
|  |  | ||||||
|     // Just parse link |     // Just parse link | ||||||
|     return RichText( |     return RichText( | ||||||
|  |       textAlign: textAlign, | ||||||
|       text: TextSpan(children: _parseLinks(context, content, style)), |       text: TextSpan(children: _parseLinks(context, content, style)), | ||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| @@ -74,7 +77,7 @@ class TextWidget extends StatelessWidget { | |||||||
|             child: InkWell( |             child: InkWell( | ||||||
|               child: Text( |               child: Text( | ||||||
|                 word, |                 word, | ||||||
|                 style: style.copyWith(color: Colors.blueAccent), |                 style: style.copyWith(color: Colors.indigo), | ||||||
|               ), |               ), | ||||||
|               onTap: () => launch(word), |               onTap: () => launch(word), | ||||||
|             ), |             ), | ||||||
| @@ -93,7 +96,7 @@ class TextWidget extends StatelessWidget { | |||||||
|             child: InkWell( |             child: InkWell( | ||||||
|               child: Text( |               child: Text( | ||||||
|                 word, |                 word, | ||||||
|                 style: style.copyWith(color: Colors.blueAccent), |                 style: style.copyWith(color: Colors.indigo), | ||||||
|               ), |               ), | ||||||
|               onTap: () => openVirtualDirectory(context, word), |               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; |     return list; | ||||||
|   } |   } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user