Skip to content

Instantly share code, notes, and snippets.

@zeeshan-mehdi
Created July 1, 2021 16:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zeeshan-mehdi/e1aec90fb9981d046b0bb245b77be7b9 to your computer and use it in GitHub Desktop.
Save zeeshan-mehdi/e1aec90fb9981d046b0bb245b77be7b9 to your computer and use it in GitHub Desktop.
class Conversation {
String id;
// conversation name for example chat with market name
String name;
// Chats messages
String lastMessage;
int lastMessageTime;
// Ids of users that read the chat message
List<String> readByUsers;
// Ids of users in this conversation
List<String> visibleToUsers;
// users in the conversation
List<User> users;
Conversation(this.users, {this.id = null, this.name = ''}) {
visibleToUsers = this.users.map((user) => user.id).toList();
readByUsers = [];
}
Conversation.fromJSON(Map<String, dynamic> jsonMap) {
try {
id = jsonMap['id'] != null ? jsonMap['id'].toString() : null;
name = jsonMap['name'] != null ? jsonMap['name'].toString() : '';
readByUsers = jsonMap['read_by_users'] != null ? List.from(jsonMap['read_by_users']) : [];
visibleToUsers = jsonMap['visible_to_users'] != null ? List.from(jsonMap['visible_to_users']) : [];
lastMessage = jsonMap['message'] != null ? jsonMap['message'].toString() : '';
lastMessageTime = jsonMap['time'] != null ? jsonMap['time'] : 0;
users = jsonMap['users'] != null
? List.from(jsonMap['users']).map((element) {
element['media'] = [
{'thumb': element['thumb']}
];
return User.fromJSON(element);
}).toList()
: [];
} catch (e) {
id = '';
name = '';
readByUsers = [];
users = [];
lastMessage = '';
lastMessageTime = 0;
}
}
Map toMap() {
var map = new Map<String, dynamic>();
map["id"] = id;
map["name"] = name;
map["users"] = users.map((element) => element.toRestrictMap()).toSet().toList();
map["visible_to_users"] = users.map((element) => element.id).toSet().toList();
map["read_by_users"] = readByUsers;
map["message"] = lastMessage;
map["time"] = lastMessageTime;
return map;
}
Map toUpdatedMap() {
var map = new Map<String, dynamic>();
map["message"] = lastMessage;
map["time"] = lastMessageTime;
map["read_by_users"] = readByUsers;
return map;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment