diff --git a/CHANGELOG.md b/CHANGELOG.md index 6444782..b30294c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,5 @@ ## 5.0.0 - WIP +- Added messageType to the ChatMessageModel to allow for different type of messages, it is nullable to remain backwards compatible - Get the color for the imagepicker from the Theme's primaryColor - Added chatMessageBuilder to the userstory configuration to customize the chat messages diff --git a/packages/chat_repository_interface/lib/src/interfaces/chat_repostory_interface.dart b/packages/chat_repository_interface/lib/src/interfaces/chat_repostory_interface.dart index b1a23b5..d665633 100644 --- a/packages/chat_repository_interface/lib/src/interfaces/chat_repostory_interface.dart +++ b/packages/chat_repository_interface/lib/src/interfaces/chat_repostory_interface.dart @@ -74,6 +74,7 @@ abstract class ChatRepositoryInterface { required String messageId, String? text, String? imageUrl, + String? messageType, DateTime? timestamp, }); diff --git a/packages/chat_repository_interface/lib/src/local/local_chat_repository.dart b/packages/chat_repository_interface/lib/src/local/local_chat_repository.dart index 7ecb6f3..0b93b05 100644 --- a/packages/chat_repository_interface/lib/src/local/local_chat_repository.dart +++ b/packages/chat_repository_interface/lib/src/local/local_chat_repository.dart @@ -50,6 +50,7 @@ class LocalChatRepository implements ChatRepositoryInterface { chatId: chat.id, senderId: message.senderId, text: message.text, + messageType: message.messageType, imageUrl: message.imageUrl, timestamp: message.timestamp, ); @@ -182,6 +183,7 @@ class LocalChatRepository implements ChatRepositoryInterface { required String messageId, String? text, String? imageUrl, + String? messageType, DateTime? timestamp, }) async { var message = MessageModel( @@ -189,6 +191,7 @@ class LocalChatRepository implements ChatRepositoryInterface { id: messageId, timestamp: timestamp ?? DateTime.now(), text: text, + messageType: messageType, senderId: senderId, imageUrl: imageUrl, ); diff --git a/packages/chat_repository_interface/lib/src/models/message_model.dart b/packages/chat_repository_interface/lib/src/models/message_model.dart index aee1b08..0bdb532 100644 --- a/packages/chat_repository_interface/lib/src/models/message_model.dart +++ b/packages/chat_repository_interface/lib/src/models/message_model.dart @@ -11,6 +11,7 @@ class MessageModel { required this.chatId, required this.id, required this.text, + required this.messageType, required this.imageUrl, required this.timestamp, required this.senderId, @@ -22,6 +23,7 @@ class MessageModel { chatId: map["chatId"], id: id, text: map["text"], + messageType: map["messageType"], imageUrl: map["imageUrl"], timestamp: DateTime.fromMillisecondsSinceEpoch(map["timestamp"]), senderId: map["senderId"], @@ -36,6 +38,9 @@ class MessageModel { /// The message text final String? text; + /// The type of message for instance (user, system, etc) + final String? messageType; + /// The message image url final String? imageUrl; @@ -50,6 +55,7 @@ class MessageModel { String? chatId, String? id, String? text, + String? messageType, String? imageUrl, DateTime? timestamp, String? senderId, @@ -58,6 +64,7 @@ class MessageModel { chatId: chatId ?? this.chatId, id: id ?? this.id, text: text ?? this.text, + messageType: messageType ?? this.messageType, imageUrl: imageUrl ?? this.imageUrl, timestamp: timestamp ?? this.timestamp, senderId: senderId ?? this.senderId, @@ -67,6 +74,7 @@ class MessageModel { Map toMap() => { "chatId": chatId, "text": text, + "messageType": messageType, "imageUrl": imageUrl, "timestamp": timestamp.millisecondsSinceEpoch, "senderId": senderId, diff --git a/packages/chat_repository_interface/lib/src/services/chat_service.dart b/packages/chat_repository_interface/lib/src/services/chat_service.dart index e542ee4..601faa8 100644 --- a/packages/chat_repository_interface/lib/src/services/chat_service.dart +++ b/packages/chat_repository_interface/lib/src/services/chat_service.dart @@ -155,12 +155,14 @@ class ChatService { required String senderId, required String messageId, String? text, + String? messageType, String? imageUrl, }) => chatRepository.sendMessage( chatId: chatId, messageId: messageId, text: text, + messageType: messageType, senderId: senderId, imageUrl: imageUrl, ); diff --git a/packages/firebase_chat_repository/lib/src/firebase_chat_repository.dart b/packages/firebase_chat_repository/lib/src/firebase_chat_repository.dart index 144fa75..cbfafd5 100644 --- a/packages/firebase_chat_repository/lib/src/firebase_chat_repository.dart +++ b/packages/firebase_chat_repository/lib/src/firebase_chat_repository.dart @@ -150,6 +150,7 @@ class FirebaseChatRepository implements ChatRepositoryInterface { required String messageId, String? text, String? imageUrl, + String? messageType, DateTime? timestamp, }) async { var message = MessageModel( @@ -157,6 +158,7 @@ class FirebaseChatRepository implements ChatRepositoryInterface { id: messageId, text: text, imageUrl: imageUrl, + messageType: messageType, timestamp: timestamp ?? DateTime.now(), senderId: senderId, );