aboutsummaryrefslogtreecommitdiff
path: root/events/roommemberevent.h
diff options
context:
space:
mode:
authorKitsune Ral <Kitsune-Ral@users.sf.net>2017-11-01 21:01:25 +0300
committerKitsune Ral <Kitsune-Ral@users.sf.net>2017-11-01 21:01:25 +0300
commit08fda4edfb1753aff148a664d623aa2497621965 (patch)
tree0fbd9c02c55498525e20d79856757e04a8ea28e2 /events/roommemberevent.h
parent2390082f7ca264aabeadc8f62bb71c39ce2b96f0 (diff)
downloadlibquotient-08fda4edfb1753aff148a664d623aa2497621965.tar.gz
libquotient-08fda4edfb1753aff148a664d623aa2497621965.zip
Imbue RoomMemberEvent with EventContent
It now allows to check what exactly has happened to the member (display name change, joining, avatar update), fixing #105.
Diffstat (limited to 'events/roommemberevent.h')
-rw-r--r--events/roommemberevent.h41
1 files changed, 29 insertions, 12 deletions
diff --git a/events/roommemberevent.h b/events/roommemberevent.h
index 358af257..d0c63f15 100644
--- a/events/roommemberevent.h
+++ b/events/roommemberevent.h
@@ -20,32 +20,49 @@
#include "event.h"
+#include "eventcontent.h"
+
#include <QtCore/QUrl>
namespace QMatrixClient
{
- class RoomMemberEvent: public RoomEvent
+ class MemberEventContent: public EventContent::Base
+ {
+ public:
+ enum MembershipType : size_t {Invite = 0, Join, Knock, Leave, Ban};
+
+ MemberEventContent(const QJsonObject& json);
+
+ MembershipType membership;
+ QString displayName;
+ QUrl avatarUrl;
+
+ protected:
+ void fillJson(QJsonObject* o) const override;
+ };
+
+ using MembershipType = MemberEventContent::MembershipType;
+
+ class RoomMemberEvent: public StateEvent<MemberEventContent>
{
Q_GADGET
public:
static constexpr const char* TypeId = "m.room.member";
- enum MembershipType : int {Invite = 0, Join, Knock, Leave, Ban};
+ using MembershipType = MemberEventContent::MembershipType;
- explicit RoomMemberEvent(const QJsonObject& obj);
+ explicit RoomMemberEvent(const QJsonObject& obj)
+ : StateEvent(Type::RoomMember, obj)
+ , _userId(obj["state_key"].toString())
+ { }
- MembershipType membership() const { return _membership; }
- const QString& userId() const { return _userId; }
- const QString& displayName() const { return _displayName; }
- const QUrl& avatarUrl() const { return _avatarUrl; }
+ MembershipType membership() const { return content().membership; }
+ QString userId() const { return _userId; }
+ QString displayName() const { return content().displayName; }
+ QUrl avatarUrl() const { return content().avatarUrl; }
private:
- MembershipType _membership;
QString _userId;
- QString _displayName;
- QUrl _avatarUrl;
-
REGISTER_ENUM(MembershipType)
};
- using MembershipType = RoomMemberEvent::MembershipType;
} // namespace QMatrixClient