[Room] Also query states for rooms

This commit is contained in:
Christian Pauly 2019-08-07 09:50:40 +02:00
parent 930404d149
commit 6cebee9eb7
2 changed files with 12 additions and 5 deletions

View File

@ -395,9 +395,11 @@ class Room {
return resp;
}
/// Returns a Room from a json String which comes normally from the store.
/// Returns a Room from a json String which comes normally from the store. If the
/// state are also given, the method will await them.
static Future<Room> getRoomFromTableRow(
Map<String, dynamic> row, Client matrix) async {
Map<String, dynamic> row, Client matrix,
{Future<List<Map<String, dynamic>>> states}) async {
String avatarUrl = row["avatar_url"];
if (avatarUrl == "")
avatarUrl = await matrix.store?.getAvatarFromSingleChat(row["id"]) ?? "";

View File

@ -363,8 +363,8 @@ class Store {
" ORDER BY origin_server_ts DESC ");
List<Room> roomList = [];
for (num i = 0; i < res.length; i++) {
Room room = await Room.getRoomFromTableRow(
res[i], client); // TODO: Also query the states for a room
Room room = await Room.getRoomFromTableRow(res[i], client,
states: getStatesFromRoomId(res[i]["id"]));
roomList.add(room);
}
return roomList;
@ -375,7 +375,12 @@ class Store {
List<Map<String, dynamic>> res =
await db.rawQuery("SELECT * FROM Rooms WHERE id=?", [id]);
if (res.length != 1) return null;
return Room.getRoomFromTableRow(res[0], client);
return Room.getRoomFromTableRow(res[0], client,
states: getStatesFromRoomId(id));
}
Future<List<Map<String, dynamic>>> getStatesFromRoomId(String id) async {
return db.rawQuery("SELECT * FROM States WHERE room_id=?", [id]);
}
Future<void> forgetRoom(String roomID) async {