1
0
mirror of https://gitlab.com/comunic/comunicmobile synced 2025-06-19 00:05:16 +00:00

Add support for server conversation message

This commit is contained in:
2021-03-10 19:08:18 +01:00
parent 08c77340a0
commit 2989e98c50
7 changed files with 131 additions and 28 deletions

View File

@ -1,6 +1,8 @@
import 'package:comunic/helpers/serialization/base_serialization_helper.dart';
import 'package:comunic/lists/users_list.dart';
import 'package:comunic/models/displayed_content.dart';
import 'package:comunic/utils/account_utils.dart' as account;
import 'package:comunic/utils/intl_utils.dart';
import 'package:meta/meta.dart';
/// Single conversation message
@ -88,6 +90,33 @@ class ConversationServerMessage {
throw Exception("Unsupported server message type!");
}
String getText(UsersList list) {
switch (type) {
case ConversationServerMessageType.USER_CREATED_CONVERSATION:
return tr("%1% created the conversation",
args: {"1": list.getUser(userID).fullName});
case ConversationServerMessageType.USER_ADDED_ANOTHER_USER:
return tr("%1% added %2% to the conversation", args: {
"1": list.getUser(userWhoAdded).fullName,
"2": list.getUser(userAdded).fullName,
});
case ConversationServerMessageType.USER_LEFT_CONV:
return tr("%1% left the conversation", args: {
"1": list.getUser(userID).fullName,
});
case ConversationServerMessageType.USER_REMOVED_ANOTHER_USER:
return tr("%1% removed %2% from the conversation", args: {
"1": list.getUser(userWhoRemoved).fullName,
"2": list.getUser(userRemoved).fullName,
});
}
throw Exception("Unsupported message type!");
}
Map<String, dynamic> toJson() => {
"type": type.toString(),
"userID": userID,
@ -126,7 +155,7 @@ class ConversationMessage extends SerializableElement<ConversationMessage> {
@required this.serverMessage,
}) : assert(id != null),
assert(convID != null),
assert(userID != null),
assert(userID != null || serverMessage != null),
assert(timeSent != null),
assert(message != null || file != null || serverMessage != null);
@ -142,6 +171,8 @@ class ConversationMessage extends SerializableElement<ConversationMessage> {
bool get isOwner => account.userID() == userID;
bool get isServerMessage => serverMessage != null;
/// Get the list of the ID of the users implied in this message
Set<int> get usersID {
if (userID != null) return Set()..add(userID);
@ -160,7 +191,7 @@ class ConversationMessage extends SerializableElement<ConversationMessage> {
"convID": convID,
"userID": userID,
"timeSent": timeSent,
"message": message,
"message": message.content,
"file": file?.toJson(),
"serverMessage": serverMessage?.toJson(),
};