Merge branch 'user-fix-calcDisplayname' into 'master'
User fix calc displayname See merge request famedly/famedlysdk!27
This commit is contained in:
commit
b57542b65c
|
@ -127,7 +127,8 @@ class Event {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Generate a new Event object from a json string, mostly a table row.
|
/// Generate a new Event object from a json string, mostly a table row.
|
||||||
static Event fromJson(Map<String, dynamic> jsonObj, Room room) {
|
static Event fromJson(Map<String, dynamic> jsonObj, Room room,
|
||||||
|
{User senderUser, User stateKeyUser}) {
|
||||||
Map<String, dynamic> content = jsonObj["content"];
|
Map<String, dynamic> content = jsonObj["content"];
|
||||||
|
|
||||||
if (content == null && jsonObj["content_json"] != null)
|
if (content == null && jsonObj["content_json"] != null)
|
||||||
|
@ -137,12 +138,16 @@ class Event {
|
||||||
print("jsonObj decode of event content failed: ${e.toString()}");
|
print("jsonObj decode of event content failed: ${e.toString()}");
|
||||||
content = {};
|
content = {};
|
||||||
}
|
}
|
||||||
|
else if (content == null) content = {};
|
||||||
|
|
||||||
|
if (senderUser == null) senderUser = User.fromJson(jsonObj, room);
|
||||||
|
if (stateKeyUser == null) stateKeyUser = User(jsonObj["state_key"]);
|
||||||
|
|
||||||
return Event(
|
return Event(
|
||||||
jsonObj["event_id"] ?? jsonObj["id"],
|
jsonObj["event_id"] ?? jsonObj["id"],
|
||||||
User.fromJson(jsonObj, room),
|
senderUser,
|
||||||
ChatTime(jsonObj["origin_server_ts"]),
|
ChatTime(jsonObj["origin_server_ts"]),
|
||||||
stateKey: User(jsonObj["state_key"]),
|
stateKey: stateKeyUser,
|
||||||
environment: jsonObj["type"],
|
environment: jsonObj["type"],
|
||||||
status: jsonObj["status"] ?? 2,
|
status: jsonObj["status"] ?? 2,
|
||||||
content: content,
|
content: content,
|
||||||
|
|
|
@ -463,11 +463,16 @@ class Store {
|
||||||
|
|
||||||
/// Returns a list of events for the given room and sets all participants.
|
/// Returns a list of events for the given room and sets all participants.
|
||||||
Future<List<Event>> getEventList(Room room) async {
|
Future<List<Event>> getEventList(Room room) async {
|
||||||
|
List<Map<String, dynamic>> memberRes = await db.rawQuery(
|
||||||
|
"SELECT * " + " FROM Users " + " WHERE users.chat_id=?", [room.id]);
|
||||||
|
Map<String, User> userMap = {};
|
||||||
|
for (num i = 0; i < memberRes.length; i++)
|
||||||
|
userMap[memberRes[i]["matrix_id"]] = User.fromJson(memberRes[i], room);
|
||||||
|
|
||||||
List<Map<String, dynamic>> eventRes = await db.rawQuery(
|
List<Map<String, dynamic>> eventRes = await db.rawQuery(
|
||||||
"SELECT * " +
|
"SELECT * " +
|
||||||
" FROM Events events, User user " +
|
" FROM Events events " +
|
||||||
" WHERE events.chat_id=?" +
|
" WHERE events.chat_id=?" +
|
||||||
" AND events.sender=user.matrix_id " +
|
|
||||||
" GROUP BY events.id " +
|
" GROUP BY events.id " +
|
||||||
" ORDER BY origin_server_ts DESC",
|
" ORDER BY origin_server_ts DESC",
|
||||||
[room.id]);
|
[room.id]);
|
||||||
|
@ -475,7 +480,9 @@ class Store {
|
||||||
List<Event> eventList = [];
|
List<Event> eventList = [];
|
||||||
|
|
||||||
for (num i = 0; i < eventRes.length; i++)
|
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;
|
return eventList;
|
||||||
}
|
}
|
||||||
|
|
|
@ -72,7 +72,7 @@ class User {
|
||||||
|
|
||||||
/// Returns the displayname or the local part of the Matrix ID if the user
|
/// Returns the displayname or the local part of the Matrix ID if the user
|
||||||
/// has no displayname.
|
/// has no displayname.
|
||||||
String calcDisplayname() => displayName.isEmpty
|
String calcDisplayname() => (displayName == null || displayName.isEmpty)
|
||||||
? id.replaceFirst("@", "").split(":")[0]
|
? id.replaceFirst("@", "").split(":")[0]
|
||||||
: displayName;
|
: displayName;
|
||||||
|
|
||||||
|
|
|
@ -51,5 +51,14 @@ void main() {
|
||||||
expect(user.powerLevel, powerLevel);
|
expect(user.powerLevel, powerLevel);
|
||||||
expect(user.calcDisplayname(), displayName);
|
expect(user.calcDisplayname(), displayName);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("calcDisplayname", () async {
|
||||||
|
final User user1 = User("@alice:example.com");
|
||||||
|
final User user2 = User("@alice:example.com", displayName: "SuperAlice");
|
||||||
|
final User user3 = User("@alice:example.com", displayName: "");
|
||||||
|
expect(user1.calcDisplayname(), "alice");
|
||||||
|
expect(user2.calcDisplayname(), "SuperAlice");
|
||||||
|
expect(user3.calcDisplayname(), "alice");
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue