[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: