[network/ruqola] src: Serialize messageencrypted

Laurent Montel <[email protected]>
Newsgroups gmane.comp.kde.cvs
Message-ID <[email protected]>
Git commit 4f7c42b1680b49bd81e24f6427e4b5f4ffbdc85c by Laurent Montel.
Committed on 03/08/2026 at 17:46.
Pushed by mlaurent into branch 'master'.

Serialize messageencrypted

M  +43   -0    src/core/messages/message.cpp
M  +1    -0    src/core/messages/message.h
M  +2    -0    src/rocketchatrestapi-qt/CMakeLists.txt
M  +1    -0    src/rocketchatrestapi-qt/autotests/CMakeLists.txt
M  +0    -5    src/rocketchatrestapi-qt/restapiutil.cpp

https://invent.kde.org/network/ruqola/-/commit/4f7c42b1680b49bd81e24f6427e4b5f4ffbdc85c

diff --git a/src/core/messages/message.cpp b/src/core/messages/message.cpp
index 361780957b..f3661638a1 100644
--- a/src/core/messages/message.cpp
+++ b/src/core/messages/message.cpp
@@ -120,6 +120,7 @@ void Message::parseMessage(const QJsonObject &o, bool restApi, EmojiManager *emo
     parseReactions(o.value("reactions"_L1).toObject(), emojiManager);
     parseChannels(o.value("channels"_L1).toArray());
     parseReplies(o.value("replies"_L1).toArray());
+    parseEncrypted(o.value("content"_L1).toObject());
 }
 
 void Message::parseReactions(const QJsonObject &reacts, EmojiManager *emojiManager)
@@ -510,6 +511,20 @@ void Message::parseReplies(const QJsonArray &replies)
     }
 }
 
+void Message::parseEncrypted(const QJsonObject &encrypted)
+{
+    if (!encrypted.isEmpty()) {
+        if (!mMessageEncrypted) {
+            mMessageEncrypted = new MessageEncrypted;
+        } else {
+            mMessageEncrypted.reset(new MessageEncrypted);
+        }
+        mMessageEncrypted->parse(encrypted);
+    } else {
+        mMessageEncrypted.reset();
+    }
+}
+
 void Message::parseBlocks(const QJsonArray &blocks)
 {
     if (!blocks.isEmpty()) {
@@ -775,6 +790,20 @@ bool Message::operator==(const Message &other) const
     } else {
         return false;
     }
+
+    // compare blocks
+    if (messageEncrypted() && other.messageEncrypted()) {
+        if (*messageEncrypted() == (*other.messageEncrypted())) {
+            result = true;
+        } else {
+            return false;
+        }
+    } else if (!messageEncrypted() && !other.messageEncrypted()) {
+        result = true;
+    } else {
+        return false;
+    }
+
     return result;
 }
 
@@ -1223,6 +1252,13 @@ Message Message::deserialize(const QJsonObject &o, EmojiManager *emojiManager)
         delete translation;
     }
 
+    if (o.contains("content"_L1)) {
+        const QJsonObject contentObj = o.value("content"_L1).toObject();
+        const MessageEncrypted *const encrypted = MessageEncrypted::deserialize(contentObj);
+        message.setMessageEncrypted(*encrypted);
+        delete encrypted;
+    }
+
     return message;
 }
 
@@ -1353,6 +1389,10 @@ QByteArray Message::serialize(const Message &message, bool toBinary)
         o["private"_L1] = true;
     }
 
+    if (message.messageEncrypted()) {
+        o["content"_L1] = MessageEncrypted::serialize(*message.messageEncrypted());
+    }
+
     if (toBinary) {
         return QCborValue::fromJsonValue(o).toCbor();
     }
@@ -1425,6 +1465,9 @@ QDebug operator<<(QDebug d, const Message &t)
     if (t.blocks()) {
         d.space() << "block" << *t.blocks();
     }
+    if (t.messageEncrypted()) {
+        d.space() << "mMessageEncrypted" << *t.messageEncrypted();
+    }
 
     d.space() << "mPrivateMessage" << t.privateMessage();
     return d;
diff --git a/src/core/messages/message.h b/src/core/messages/message.h
index 5993943522..5e54c2793a 100644
--- a/src/core/messages/message.h
+++ b/src/core/messages/message.h
@@ -254,6 +254,7 @@ private:
     LIBRUQOLACORE_NO_EXPORT void parseBlocks(const QJsonArray &blocks);
     LIBRUQOLACORE_NO_EXPORT void assignMessageStateValue(MessageState type, bool status);
     LIBRUQOLACORE_NO_EXPORT void parseReplies(const QJsonArray &replies);
+    LIBRUQOLACORE_NO_EXPORT void parseEncrypted(const QJsonObject &encrypted);
     [[nodiscard]] LIBRUQOLACORE_NO_EXPORT bool messageStateValue(MessageState type) const;
     [[nodiscard]] LIBRUQOLACORE_NO_EXPORT MessageExtra *messageExtra();
 
diff --git a/src/rocketchatrestapi-qt/CMakeLists.txt b/src/rocketchatrestapi-qt/CMakeLists.txt
index 5d1c5c9243..ff3c4ff8f7 100644
--- a/src/rocketchatrestapi-qt/CMakeLists.txt
+++ b/src/rocketchatrestapi-qt/CMakeLists.txt
@@ -199,6 +199,8 @@ target_sources(
         e2e/provideuserswithsuggestedgroupkeysjob.h
         e2e/getusersofroomwithoutkey.h
         e2e/getusersofroomwithoutkey.cpp
+        e2e/fetchuserswaitingforgroupkeyjob.h
+        e2e/fetchuserswaitingforgroupkeyjob.cpp
         emoji/emojicustomalljob.cpp
         emoji/emojicustomalljob.h
         emoji/emojicustomcreatejob.cpp
diff --git a/src/rocketchatrestapi-qt/autotests/CMakeLists.txt b/src/rocketchatrestapi-qt/autotests/CMakeLists.txt
index 4c73b2fa51..d52515a386 100644
--- a/src/rocketchatrestapi-qt/autotests/CMakeLists.txt
+++ b/src/rocketchatrestapi-qt/autotests/CMakeLists.txt
@@ -322,3 +322,4 @@ add_rocketchatrestapi_test(roomsunbanuserjobtest.cpp)
 add_rocketchatrestapi_test(customsoundsdeletejobtest.cpp)
 add_rocketchatrestapi_test(imblockuserjobtest.cpp)
 add_rocketchatrestapi_test(deletemessagefilejobtest.cpp)
+add_rocketchatrestapi_test(fetchuserswaitingforgroupkeyjobtest.cpp)
diff --git a/src/rocketchatrestapi-qt/restapiutil.cpp b/src/rocketchatrestapi-qt/restapiutil.cpp
index 08eceb524b..49b37f694f 100644
--- a/src/rocketchatrestapi-qt/restapiutil.cpp
+++ b/src/rocketchatrestapi-qt/restapiutil.cpp
@@ -388,7 +388,6 @@ QString RestApiUtil::restUrl(RestApiUtil::RestApiUrlType type)
         return u"e2e.requestSubscriptionKeys"_s;
     case RestApiUtil::RestApiUrlType::E2EResetOwnE2EKey:
         return u"e2e.resetOwnE2EKey"_s;
-
     case RestApiUtil::RestApiUrlType::E2EAcceptSuggestedGroupKey:
         return u"e2e.acceptSuggestedGroupKey"_s;
     case RestApiUtil::RestApiUrlType::E2ERejectSuggestedGroupKey:
@@ -399,7 +398,6 @@ QString RestApiUtil::restUrl(RestApiUtil::RestApiUrlType type)
         return u"e2e.resetRoomKey"_s;
     case RestApiUtil::RestApiUrlType::E2EFetchUsersWaitingForGroupKey:
         return u"e2e.fetchUsersWaitingForGroupKey"_s;
-
     case RestApiUtil::RestApiUrlType::RolesList:
         return u"roles.list"_s;
     case RestApiUtil::RestApiUrlType::RolesCreate:
@@ -414,13 +412,10 @@ QString RestApiUtil::restUrl(RestApiUtil::RestApiUrlType type)
         return u"roles.addUserToRole"_s;
     case RestApiUtil::RestApiUrlType::RolesRemoveUserFromRole:
         return u"roles.removeUserFromRole"_s;
-
     case RestApiUtil::RestApiUrlType::RolesDelete:
         return u"roles.delete"_s;
-
     case RestApiUtil::RestApiUrlType::VideoConfJitsi:
         return u"video-conference/jitsi.update-timeout"_s;
-
     case RestApiUtil::RestApiUrlType::AutoTranslateGetSupportedLanguages:
         return u"autotranslate.getSupportedLanguages"_s;
     case RestApiUtil::RestApiUrlType::AutoTranslateSaveSettings:
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.