updateRoom method
void
updateRoom(
- Room room
Updates a room in the Firestore. Accepts any room. Room will probably be taken from the rooms stream.
Implementation
void updateRoom(types.Room room) async {
if (firebaseUser == null) return;
final roomMap = room.toJson();
roomMap.removeWhere((key, value) =>
key == 'createdAt' ||
key == 'id' ||
key == 'lastMessages' ||
key == 'users');
if (room.type == types.RoomType.direct) {
roomMap['imageUrl'] = null;
roomMap['name'] = null;
}
roomMap['lastMessages'] = room.lastMessages?.map((m) {
final messageMap = m.toJson();
messageMap.removeWhere((key, value) =>
key == 'author' ||
key == 'createdAt' ||
key == 'id' ||
key == 'updatedAt');
messageMap['authorId'] = m.author.id;
return messageMap;
}).toList();
roomMap['updatedAt'] = FieldValue.serverTimestamp();
roomMap['userIds'] = room.users.map((u) => u.id).toList();
await getFirebaseFirestore()
.collection(config.roomsCollectionName)
.doc(room.id)
.update(roomMap);
}