From a70b82e88d7920f58179c0c44932b50256026747 Mon Sep 17 00:00:00 2001 From: Christian Pauly Date: Wed, 3 Jul 2019 11:42:19 +0200 Subject: [PATCH] Get Sender from Store --- lib/src/Event.dart | 13 ++++++++----- lib/src/Store.dart | 13 ++++++++++--- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/lib/src/Event.dart b/lib/src/Event.dart index b90dde3a..114c5aa4 100644 --- a/lib/src/Event.dart +++ b/lib/src/Event.dart @@ -127,7 +127,8 @@ class Event { } /// Generate a new Event object from a json string, mostly a table row. - static Event fromJson(Map jsonObj, Room room) { + static Event fromJson(Map jsonObj, Room room, + {User senderUser, User stateKeyUser}) { Map content = jsonObj["content"]; if (content == null && jsonObj["content_json"] != null) @@ -137,14 +138,16 @@ class Event { print("jsonObj decode of event content failed: ${e.toString()}"); content = {}; } - else - content = {}; + else if (content == null) content = {}; + + if (senderUser == null) senderUser = User(jsonObj["sender"]); + if (stateKeyUser == null) stateKeyUser = User(jsonObj["state_key"]); return Event( jsonObj["event_id"] ?? jsonObj["id"], - User.fromJson(jsonObj, room), + senderUser, ChatTime(jsonObj["origin_server_ts"]), - stateKey: User(jsonObj["state_key"]), + stateKey: stateKeyUser, environment: jsonObj["type"], status: jsonObj["status"] ?? 2, content: content, diff --git a/lib/src/Store.dart b/lib/src/Store.dart index 7e6b9c68..08214b77 100644 --- a/lib/src/Store.dart +++ b/lib/src/Store.dart @@ -463,11 +463,16 @@ class Store { /// Returns a list of events for the given room and sets all participants. Future> getEventList(Room room) async { + List> memberRes = await db.rawQuery( + "SELECT * " + " FROM Users " + " WHERE users.chat_id=?", [room.id]); + Map userMap = {}; + for (num i = 0; i < memberRes.length; i++) + userMap[memberRes[i]["matrix_id"]] = User.fromJson(memberRes[i], room); + List> eventRes = await db.rawQuery( "SELECT * " + - " FROM Events events, User user " + + " FROM Events events " + " WHERE events.chat_id=?" + - " AND events.sender=user.matrix_id " + " GROUP BY events.id " + " ORDER BY origin_server_ts DESC", [room.id]); @@ -475,7 +480,9 @@ class Store { List eventList = []; for (num i = 0; i < eventRes.length; i++) - eventList.add(Event.fromJson(eventRes[i], room)); + eventList.add(Event.fromJson(eventRes[i], room, + senderUser: userMap[eventRes[i]["sender"]], + stateKeyUser: userMap[eventRes[i]["state_key"]])); return eventList; }