From 7401a0dc2041051763ecc9e524a0d6dccdbf22a8 Mon Sep 17 00:00:00 2001 From: Christian Pauly Date: Wed, 7 Aug 2019 10:32:18 +0200 Subject: [PATCH] [AccountData] Add new classes --- lib/src/AccountData.dart | 32 ++++++++++++++++++++++++++++++++ lib/src/Presence.dart | 32 ++++++++++++++++++++++++++++++++ lib/src/RawEvent.dart | 3 +-- lib/src/Room.dart | 6 +++++- lib/src/RoomAccountData.dart | 32 ++++++++++++++++++++++++++++++++ 5 files changed, 102 insertions(+), 3 deletions(-) create mode 100644 lib/src/AccountData.dart create mode 100644 lib/src/Presence.dart create mode 100644 lib/src/RoomAccountData.dart diff --git a/lib/src/AccountData.dart b/lib/src/AccountData.dart new file mode 100644 index 0000000..0eb1393 --- /dev/null +++ b/lib/src/AccountData.dart @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2019 Zender & Kurtz GbR. + * + * Authors: + * Christian Pauly + * Marcel Radzio + * + * This file is part of famedlysdk. + * + * famedlysdk is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * famedlysdk is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with famedlysdk. If not, see . + */ + +class AccountData { + /// The json payload of the content. The content highly depends on the type. + final Map content; + + /// The type String of this event. For example 'm.room.message'. + final String typeKey; + + AccountData({this.content, this.typeKey}); +} diff --git a/lib/src/Presence.dart b/lib/src/Presence.dart new file mode 100644 index 0000000..291cd04 --- /dev/null +++ b/lib/src/Presence.dart @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2019 Zender & Kurtz GbR. + * + * Authors: + * Christian Pauly + * Marcel Radzio + * + * This file is part of famedlysdk. + * + * famedlysdk is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * famedlysdk is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with famedlysdk. If not, see . + */ + +import 'package:famedlysdk/src/AccountData.dart'; + +class Presence extends AccountData { + /// The user who has sent this event if it is not a global account data event. + final String sender; + + Presence({this.sender, Map content, String typeKey}) + : super(content: content, typeKey: typeKey); +} diff --git a/lib/src/RawEvent.dart b/lib/src/RawEvent.dart index 153463d..f8aeb8b 100644 --- a/lib/src/RawEvent.dart +++ b/lib/src/RawEvent.dart @@ -37,8 +37,7 @@ class RawEvent { /// The type String of this event. For example 'm.room.message'. final String typeKey; - /// The ID of the room this event belongs to if there is any. Use this to get the room - /// if the [room] is null. + /// The ID of the room this event belongs to. final String roomId; /// The user who has sent this event if it is not a global account data event. diff --git a/lib/src/Room.dart b/lib/src/Room.dart index e62538f..c4b896a 100644 --- a/lib/src/Room.dart +++ b/lib/src/Room.dart @@ -23,6 +23,7 @@ import 'package:famedlysdk/src/Client.dart'; import 'package:famedlysdk/src/Event.dart'; +import 'package:famedlysdk/src/RoomAccountData.dart'; import 'package:famedlysdk/src/State.dart'; import 'package:famedlysdk/src/responses/ErrorResponse.dart'; import 'package:famedlysdk/src/sync/EventUpdate.dart'; @@ -55,6 +56,8 @@ class Room { Map states; + Map roomAccountData; + /// Time when the user has last read the chat. ChatTime unread; @@ -86,7 +89,8 @@ class Room { MxContent get avatar { if (states["m.room.avatar"] != null) return MxContent(states["m.room.avatar"].content["avatar_url"]); - if (mHeroes.length == 1) return getUserByMXID(mHeroes[0]).avatar; + if (mHeroes.length == 1 && states[mHeroes[0]] != null) + return (states[mHeroes[0]] as User).avatarUrl; return MxContent(""); } diff --git a/lib/src/RoomAccountData.dart b/lib/src/RoomAccountData.dart new file mode 100644 index 0000000..2ca75db --- /dev/null +++ b/lib/src/RoomAccountData.dart @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2019 Zender & Kurtz GbR. + * + * Authors: + * Christian Pauly + * Marcel Radzio + * + * This file is part of famedlysdk. + * + * famedlysdk is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * famedlysdk is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with famedlysdk. If not, see . + */ + +import 'package:famedlysdk/src/AccountData.dart'; + +class RoomAccountData extends AccountData { + /// The user who has sent this event if it is not a global account data event. + final String room_id; + + RoomAccountData({this.room_id, Map content, String typeKey}) + : super(content: content, typeKey: typeKey); +}