diff options
Diffstat (limited to 'events')
-rw-r--r-- | events/directchatevent.cpp | 36 | ||||
-rw-r--r-- | events/directchatevent.h | 34 | ||||
-rw-r--r-- | events/event.cpp | 3 | ||||
-rw-r--r-- | events/roommemberevent.cpp | 1 | ||||
-rw-r--r-- | events/roommemberevent.h | 2 |
5 files changed, 75 insertions, 1 deletions
diff --git a/events/directchatevent.cpp b/events/directchatevent.cpp new file mode 100644 index 00000000..7049d967 --- /dev/null +++ b/events/directchatevent.cpp @@ -0,0 +1,36 @@ +/****************************************************************************** + * Copyright (C) 2018 Kitsune Ral <kitsune-ral@users.sf.net> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "directchatevent.h" + +#include "converters.h" + +using namespace QMatrixClient; + +DirectChatEvent::DirectChatEvent(const QJsonObject& obj) + : Event(Type::DirectChat, obj) +{ } + +QMultiHash<QString, QString> DirectChatEvent::usersToDirectChats() const +{ + QMultiHash<QString, QString> result; + for (auto it = contentJson().begin(); it != contentJson().end(); ++it) + for (auto roomIdValue: it.value().toArray()) + result.insert(it.key(), roomIdValue.toString()); + return result; +} diff --git a/events/directchatevent.h b/events/directchatevent.h new file mode 100644 index 00000000..2b0ad0a0 --- /dev/null +++ b/events/directchatevent.h @@ -0,0 +1,34 @@ +/****************************************************************************** + * Copyright (C) 2018 Kitsune Ral <kitsune-ral@users.sf.net> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#pragma once + +#include "event.h" + +namespace QMatrixClient +{ + class DirectChatEvent : public Event + { + public: + explicit DirectChatEvent(const QJsonObject& obj); + + QMultiHash<QString, QString> usersToDirectChats() const; + + static constexpr const char * TypeId = "m.direct"; + }; +} diff --git a/events/event.cpp b/events/event.cpp index f3e965e2..8ddf3945 100644 --- a/events/event.cpp +++ b/events/event.cpp @@ -25,6 +25,7 @@ #include "typingevent.h" #include "receiptevent.h" #include "accountdataevents.h" +#include "directchatevent.h" #include "redactionevent.h" #include "logging.h" @@ -88,7 +89,7 @@ EventPtr _impl::doMakeEvent<Event>(const QJsonObject& obj) return EventPtr(move(e)); return EventPtr { makeIfMatches<Event, - TypingEvent, ReceiptEvent, TagEvent, ReadMarkerEvent>( + TypingEvent, ReceiptEvent, TagEvent, ReadMarkerEvent, DirectChatEvent>( obj, obj["type"].toString()) }; } diff --git a/events/roommemberevent.cpp b/events/roommemberevent.cpp index a9e301a4..76b003c2 100644 --- a/events/roommemberevent.cpp +++ b/events/roommemberevent.cpp @@ -51,6 +51,7 @@ namespace QMatrixClient MemberEventContent::MemberEventContent(const QJsonObject& json) : membership(fromJson<MembershipType>(json["membership"])) + , isDirect(json["is_direct"].toBool()) , displayName(json["displayname"].toString()) , avatarUrl(json["avatar_url"].toString()) { } diff --git a/events/roommemberevent.h b/events/roommemberevent.h index b9ff0d70..89b970c9 100644 --- a/events/roommemberevent.h +++ b/events/roommemberevent.h @@ -38,6 +38,7 @@ namespace QMatrixClient explicit MemberEventContent(const QJsonObject& json); MembershipType membership; + bool isDirect = false; QString displayName; QUrl avatarUrl; @@ -66,6 +67,7 @@ namespace QMatrixClient MembershipType membership() const { return content().membership; } QString userId() const { return originalJsonObject().value("state_key").toString(); } + bool isDirect() const { return content().isDirect; } QString displayName() const { return content().displayName; } QUrl avatarUrl() const { return content().avatarUrl; } |