diff options
author | Kitsune Ral <Kitsune-Ral@users.sf.net> | 2017-11-01 21:01:25 +0300 |
---|---|---|
committer | Kitsune Ral <Kitsune-Ral@users.sf.net> | 2017-11-01 21:01:25 +0300 |
commit | 08fda4edfb1753aff148a664d623aa2497621965 (patch) | |
tree | 0fbd9c02c55498525e20d79856757e04a8ea28e2 /events/roommemberevent.h | |
parent | 2390082f7ca264aabeadc8f62bb71c39ce2b96f0 (diff) | |
download | libquotient-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.h | 41 |
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 |