From 0cb19d833caf14cbd0da6dc7e8278f91da485ee5 Mon Sep 17 00:00:00 2001 From: Slava Monich Date: Wed, 30 Dec 2020 18:11:01 +0200 Subject: [PATCH] Message API usage cleanup 1. Pass chat_id where appropriate 2. Pass message_id and chat_id (which are numbers) as numbers 3. Use pre-initialized QStrings more often 4. Don't pass numbers by const reference, it doesn't make sense 5. Removed some redundant const modifiers --- qml/components/MessageListViewItem.qml | 2 +- src/chatmodel.cpp | 9 +- src/chatmodel.h | 2 +- src/tdlibreceiver.cpp | 6 +- src/tdlibreceiver.h | 2 +- src/tdlibwrapper.cpp | 136 +++++++++++++------------ src/tdlibwrapper.h | 28 ++--- 7 files changed, 94 insertions(+), 91 deletions(-) diff --git a/qml/components/MessageListViewItem.qml b/qml/components/MessageListViewItem.qml index 480af9a..2a3e32e 100644 --- a/qml/components/MessageListViewItem.qml +++ b/qml/components/MessageListViewItem.qml @@ -171,7 +171,7 @@ ListItem { Connections { target: tdLibWrapper onReceivedMessage: { - if (messageId === myMessage.reply_to_message_id.toString()) { + if (messageId === myMessage.reply_to_message_id) { messageInReplyToLoader.inReplyToMessage = message; } } diff --git a/src/chatmodel.cpp b/src/chatmodel.cpp index 72d994b..a89a74a 100644 --- a/src/chatmodel.cpp +++ b/src/chatmodel.cpp @@ -110,7 +110,7 @@ ChatModel::ChatModel(TDLibWrapper *tdLibWrapper) : this->tdLibWrapper = tdLibWrapper; connect(this->tdLibWrapper, SIGNAL(messagesReceived(QVariantList, int)), this, SLOT(handleMessagesReceived(QVariantList, int))); connect(this->tdLibWrapper, SIGNAL(newMessageReceived(qlonglong, QVariantMap)), this, SLOT(handleNewMessageReceived(qlonglong, QVariantMap))); - connect(this->tdLibWrapper, SIGNAL(receivedMessage(QString, QVariantMap)), this, SLOT(handleMessageReceived(QString, QVariantMap))); + connect(this->tdLibWrapper, SIGNAL(receivedMessage(qlonglong, qlonglong, QVariantMap)), this, SLOT(handleMessageReceived(qlonglong, qlonglong, QVariantMap))); connect(this->tdLibWrapper, SIGNAL(chatReadInboxUpdated(QString, QString, int)), this, SLOT(handleChatReadInboxUpdated(QString, QString, int))); connect(this->tdLibWrapper, SIGNAL(chatReadOutboxUpdated(QString, QString)), this, SLOT(handleChatReadOutboxUpdated(QString, QString))); connect(this->tdLibWrapper, SIGNAL(messageSendSucceeded(qlonglong, qlonglong, QVariantMap)), this, SLOT(handleMessageSendSucceeded(qlonglong, qlonglong, QVariantMap))); @@ -365,12 +365,11 @@ void ChatModel::handleNewMessageReceived(qlonglong chatId, const QVariantMap &me } } -void ChatModel::handleMessageReceived(const QString &messageId, const QVariantMap &message) +void ChatModel::handleMessageReceived(qlonglong chatId, qlonglong messageId, const QVariantMap &message) { - const qlonglong messageIdLL = messageId.toLongLong(); - if (messageIndexMap.contains(messageIdLL)) { + if (chatId == this->chatId && messageIndexMap.contains(messageId)) { LOG("Received a message that we already know, let's update it!"); - const int position = messageIndexMap.value(messageIdLL); + const int position = messageIndexMap.value(messageId); MessageData *messageData = messages.at(position); messageData->messageData = message; LOG("Message was updated at index" << position); diff --git a/src/chatmodel.h b/src/chatmodel.h index 6895902..87d741a 100644 --- a/src/chatmodel.h +++ b/src/chatmodel.h @@ -64,7 +64,7 @@ signals: private slots: void handleMessagesReceived(const QVariantList &messages, int totalCount); void handleNewMessageReceived(qlonglong chatId, const QVariantMap &message); - void handleMessageReceived(const QString &messageId, const QVariantMap &message); + void handleMessageReceived(qlonglong chatId, qlonglong messageId, const QVariantMap &message); void handleChatReadInboxUpdated(const QString &chatId, const QString &lastReadInboxMessageId, int unreadCount); void handleChatReadOutboxUpdated(const QString &chatId, const QString &lastReadOutboxMessageId); void handleMessageSendSucceeded(qlonglong messageId, qlonglong oldMessageId, const QVariantMap &message); diff --git a/src/tdlibreceiver.cpp b/src/tdlibreceiver.cpp index 8508a32..57200e8 100644 --- a/src/tdlibreceiver.cpp +++ b/src/tdlibreceiver.cpp @@ -344,10 +344,10 @@ void TDLibReceiver::processUpdateNewMessage(const QVariantMap &receivedInformati void TDLibReceiver::processMessage(const QVariantMap &receivedInformation) { - const QString chatId = receivedInformation.value(CHAT_ID).toString(); - const QString messageId = receivedInformation.value(ID).toString(); + const qlonglong chatId = receivedInformation.value(CHAT_ID).toLongLong(); + const qlonglong messageId = receivedInformation.value(ID).toLongLong(); LOG("Received message " << chatId << messageId); - emit messageInformation(messageId, receivedInformation); + emit messageInformation(chatId, messageId, receivedInformation); } void TDLibReceiver::processMessageSendSucceeded(const QVariantMap &receivedInformation) diff --git a/src/tdlibreceiver.h b/src/tdlibreceiver.h index 6a3068d..58c182f 100644 --- a/src/tdlibreceiver.h +++ b/src/tdlibreceiver.h @@ -56,7 +56,7 @@ signals: void chatOnlineMemberCountUpdated(const QString &chatId, int onlineMemberCount); void messagesReceived(const QVariantList &messages, int totalCount); void newMessageReceived(qlonglong chatId, const QVariantMap &message); - void messageInformation(const QString &messageId, const QVariantMap &message); + void messageInformation(qlonglong chatId, qlonglong messageId, const QVariantMap &message); void messageSendSucceeded(qlonglong messageId, qlonglong oldMessageId, const QVariantMap &message); void activeNotificationsUpdated(const QVariantList notificationGroups); void notificationGroupUpdated(const QVariantMap notificationGroupUpdate); diff --git a/src/tdlibwrapper.cpp b/src/tdlibwrapper.cpp index 883658e..43d361d 100644 --- a/src/tdlibwrapper.cpp +++ b/src/tdlibwrapper.cpp @@ -40,6 +40,7 @@ namespace { const QString STATUS("status"); const QString ID("id"); const QString CHAT_ID("chat_id"); + const QString MESSAGE_ID("message_id"); const QString TYPE("type"); const QString LAST_NAME("last_name"); const QString FIRST_NAME("first_name"); @@ -90,7 +91,7 @@ TDLibWrapper::TDLibWrapper(AppSettings *appSettings, MceInterface *mceInterface, connect(this->tdLibReceiver, SIGNAL(chatOnlineMemberCountUpdated(QString, int)), this, SIGNAL(chatOnlineMemberCountUpdated(QString, int))); connect(this->tdLibReceiver, SIGNAL(messagesReceived(QVariantList, int)), this, SIGNAL(messagesReceived(QVariantList, int))); connect(this->tdLibReceiver, SIGNAL(newMessageReceived(qlonglong, QVariantMap)), this, SIGNAL(newMessageReceived(qlonglong, QVariantMap))); - connect(this->tdLibReceiver, SIGNAL(messageInformation(QString, QVariantMap)), this, SLOT(handleMessageInformation(QString, QVariantMap))); + connect(this->tdLibReceiver, SIGNAL(messageInformation(qlonglong, qlonglong, QVariantMap)), this, SLOT(handleMessageInformation(qlonglong, qlonglong, QVariantMap))); connect(this->tdLibReceiver, SIGNAL(messageSendSucceeded(qlonglong, qlonglong, QVariantMap)), this, SIGNAL(messageSendSucceeded(qlonglong, qlonglong, QVariantMap))); connect(this->tdLibReceiver, SIGNAL(activeNotificationsUpdated(QVariantList)), this, SIGNAL(activeNotificationsUpdated(QVariantList))); connect(this->tdLibReceiver, SIGNAL(notificationGroupUpdated(QVariantMap)), this, SIGNAL(notificationGroupUpdated(QVariantMap))); @@ -211,9 +212,9 @@ void TDLibWrapper::registerUser(const QString &firstName, const QString &lastNam { LOG("Register User " << firstName << lastName); QVariantMap requestObject; - requestObject.insert("@type", "registerUser"); - requestObject.insert("first_name", firstName); - requestObject.insert("last_name", lastName); + requestObject.insert(_TYPE, "registerUser"); + requestObject.insert(FIRST_NAME, firstName); + requestObject.insert(LAST_NAME, lastName); this->sendRequest(requestObject); } @@ -244,7 +245,7 @@ void TDLibWrapper::openChat(const QString &chatId) LOG("Opening chat " << chatId); QVariantMap requestObject; requestObject.insert(_TYPE, "openChat"); - requestObject.insert("chat_id", chatId); + requestObject.insert(CHAT_ID, chatId); this->sendRequest(requestObject); } @@ -253,7 +254,7 @@ void TDLibWrapper::closeChat(const QString &chatId) LOG("Closing chat " << chatId); QVariantMap requestObject; requestObject.insert(_TYPE, "closeChat"); - requestObject.insert("chat_id", chatId); + requestObject.insert(CHAT_ID, chatId); this->sendRequest(requestObject); } @@ -262,7 +263,7 @@ void TDLibWrapper::joinChat(const QString &chatId) LOG("Joining chat " << chatId); QVariantMap requestObject; requestObject.insert(_TYPE, "joinChat"); - requestObject.insert("chat_id", chatId); + requestObject.insert(CHAT_ID, chatId); this->joinChatRequested = true; this->sendRequest(requestObject); } @@ -272,16 +273,16 @@ void TDLibWrapper::leaveChat(const QString &chatId) LOG("Leaving chat " << chatId); QVariantMap requestObject; requestObject.insert(_TYPE, "leaveChat"); - requestObject.insert("chat_id", chatId); + requestObject.insert(CHAT_ID, chatId); this->sendRequest(requestObject); } -void TDLibWrapper::getChatHistory(qlonglong chatId, const qlonglong &fromMessageId, int offset, int limit, bool onlyLocal) +void TDLibWrapper::getChatHistory(qlonglong chatId, qlonglong fromMessageId, int offset, int limit, bool onlyLocal) { LOG("Retrieving chat history" << chatId << fromMessageId << offset << limit << onlyLocal); QVariantMap requestObject; requestObject.insert(_TYPE, "getChatHistory"); - requestObject.insert("chat_id", chatId); + requestObject.insert(CHAT_ID, chatId); requestObject.insert("from_message_id", fromMessageId); requestObject.insert("offset", offset); requestObject.insert("limit", limit); @@ -294,7 +295,7 @@ void TDLibWrapper::viewMessage(const QString &chatId, const QString &messageId, LOG("Mark message as viewed" << chatId << messageId); QVariantMap requestObject; requestObject.insert(_TYPE, "viewMessages"); - requestObject.insert("chat_id", chatId); + requestObject.insert(CHAT_ID, chatId); requestObject.insert("force_read", force); QVariantList messageIds; messageIds.append(messageId); @@ -307,8 +308,8 @@ void TDLibWrapper::pinMessage(const QString &chatId, const QString &messageId, b LOG("Pin message to chat" << chatId << messageId << disableNotification); QVariantMap requestObject; requestObject.insert(_TYPE, "pinChatMessage"); - requestObject.insert("chat_id", chatId); - requestObject.insert("message_id", messageId); + requestObject.insert(CHAT_ID, chatId); + requestObject.insert(MESSAGE_ID, messageId); requestObject.insert("disable_notification", disableNotification); this->sendRequest(requestObject); } @@ -318,8 +319,8 @@ void TDLibWrapper::unpinMessage(const QString &chatId, const QString &messageId) LOG("Unpin message from chat" << chatId); QVariantMap requestObject; requestObject.insert(_TYPE, "unpinChatMessage"); - requestObject.insert("chat_id", chatId); - requestObject.insert("message_id", messageId); + requestObject.insert(CHAT_ID, chatId); + requestObject.insert(MESSAGE_ID, messageId); requestObject.insert(_EXTRA, "unpinChatMessage:" + chatId); this->sendRequest(requestObject); } @@ -341,7 +342,7 @@ void TDLibWrapper::sendTextMessage(const QString &chatId, const QString &message LOG("Sending text message" << chatId << message << replyToMessageId); QVariantMap requestObject; requestObject.insert(_TYPE, "sendMessage"); - requestObject.insert("chat_id", chatId); + requestObject.insert(CHAT_ID, chatId); if (replyToMessageId != "0") { requestObject.insert("reply_to_message_id", replyToMessageId); } @@ -402,7 +403,7 @@ void TDLibWrapper::sendPhotoMessage(const QString &chatId, const QString &filePa LOG("Sending photo message" << chatId << filePath << message << replyToMessageId); QVariantMap requestObject; requestObject.insert(_TYPE, "sendMessage"); - requestObject.insert("chat_id", chatId); + requestObject.insert(CHAT_ID, chatId); if (replyToMessageId != "0") { requestObject.insert("reply_to_message_id", replyToMessageId); } @@ -426,7 +427,7 @@ void TDLibWrapper::sendVideoMessage(const QString &chatId, const QString &filePa LOG("Sending video message" << chatId << filePath << message << replyToMessageId); QVariantMap requestObject; requestObject.insert(_TYPE, "sendMessage"); - requestObject.insert("chat_id", chatId); + requestObject.insert(CHAT_ID, chatId); if (replyToMessageId != "0") { requestObject.insert("reply_to_message_id", replyToMessageId); } @@ -450,7 +451,7 @@ void TDLibWrapper::sendDocumentMessage(const QString &chatId, const QString &fil LOG("Sending document message" << chatId << filePath << message << replyToMessageId); QVariantMap requestObject; requestObject.insert(_TYPE, "sendMessage"); - requestObject.insert("chat_id", chatId); + requestObject.insert(CHAT_ID, chatId); if (replyToMessageId != "0") { requestObject.insert("reply_to_message_id", replyToMessageId); } @@ -474,7 +475,7 @@ void TDLibWrapper::sendStickerMessage(const QString &chatId, const QString &file LOG("Sending sticker message" << chatId << fileId << replyToMessageId); QVariantMap requestObject; requestObject.insert(_TYPE, "sendMessage"); - requestObject.insert("chat_id", chatId); + requestObject.insert(CHAT_ID, chatId); if (replyToMessageId != "0") { requestObject.insert("reply_to_message_id", replyToMessageId); } @@ -491,12 +492,12 @@ void TDLibWrapper::sendStickerMessage(const QString &chatId, const QString &file this->sendRequest(requestObject); } -void TDLibWrapper::sendPollMessage(const QString &chatId, const QString &question, const QVariantList &options, const bool &anonymous, const int &correctOption, const bool &multiple, const QString &replyToMessageId) +void TDLibWrapper::sendPollMessage(const QString &chatId, const QString &question, const QVariantList &options, bool anonymous, int correctOption, bool multiple, const QString &replyToMessageId) { LOG("Sending poll message" << chatId << question << replyToMessageId); QVariantMap requestObject; requestObject.insert(_TYPE, "sendMessage"); - requestObject.insert("chat_id", chatId); + requestObject.insert(CHAT_ID, chatId); if (replyToMessageId != "0") { requestObject.insert("reply_to_message_id", replyToMessageId); } @@ -521,12 +522,12 @@ void TDLibWrapper::sendPollMessage(const QString &chatId, const QString &questio this->sendRequest(requestObject); } -void TDLibWrapper::forwardMessages(const QString &chatId, const QString &fromChatId, const QVariantList &messageIds, const bool sendCopy, const bool removeCaption) +void TDLibWrapper::forwardMessages(const QString &chatId, const QString &fromChatId, const QVariantList &messageIds, bool sendCopy, bool removeCaption) { LOG("Forwarding messages" << chatId << fromChatId << messageIds); QVariantMap requestObject; requestObject.insert(_TYPE, "forwardMessages"); - requestObject.insert("chat_id", chatId); + requestObject.insert(CHAT_ID, chatId); requestObject.insert("from_chat_id", fromChatId); requestObject.insert("message_ids", messageIds); requestObject.insert("send_copy", sendCopy); @@ -535,14 +536,14 @@ void TDLibWrapper::forwardMessages(const QString &chatId, const QString &fromCha this->sendRequest(requestObject); } -void TDLibWrapper::getMessage(const QString &chatId, const QString &messageId) +void TDLibWrapper::getMessage(qlonglong chatId, qlonglong messageId) { LOG("Retrieving message" << chatId << messageId); QVariantMap requestObject; requestObject.insert(_TYPE, "getMessage"); - requestObject.insert("chat_id", chatId); - requestObject.insert("message_id", messageId); - requestObject.insert(_EXTRA, "getMessage:" + messageId); + requestObject.insert(CHAT_ID, chatId); + requestObject.insert(MESSAGE_ID, messageId); + requestObject.insert(_EXTRA, QString("getMessage:%1:%2").arg(chatId).arg(messageId)); this->sendRequest(requestObject); } @@ -551,18 +552,18 @@ void TDLibWrapper::getCallbackQueryAnswer(const QString &chatId, const QString & LOG("Getting Callback Query Answer" << chatId << messageId); QVariantMap requestObject; requestObject.insert(_TYPE, "getCallbackQueryAnswer"); - requestObject.insert("chat_id", chatId); - requestObject.insert("message_id", messageId); + requestObject.insert(CHAT_ID, chatId); + requestObject.insert(MESSAGE_ID, messageId); requestObject.insert("payload", payload); this->sendRequest(requestObject); } -void TDLibWrapper::getChatPinnedMessage(const qlonglong &chatId) +void TDLibWrapper::getChatPinnedMessage(qlonglong chatId) { LOG("Retrieving pinned message" << chatId); QVariantMap requestObject; requestObject.insert(_TYPE, "getChatPinnedMessage"); - requestObject.insert("chat_id", chatId); + requestObject.insert(CHAT_ID, chatId); requestObject.insert(_EXTRA, "getChatPinnedMessage:" + QString::number(chatId)); this->sendRequest(requestObject); } @@ -596,7 +597,7 @@ void TDLibWrapper::setChatNotificationSettings(const QString &chatId, const QVar LOG("Notification settings for chat " << chatId << notificationSettings); QVariantMap requestObject; requestObject.insert(_TYPE, "setChatNotificationSettings"); - requestObject.insert("chat_id", chatId); + requestObject.insert(CHAT_ID, chatId); requestObject.insert("notification_settings", notificationSettings); this->sendRequest(requestObject); } @@ -606,8 +607,8 @@ void TDLibWrapper::editMessageText(const QString &chatId, const QString &message LOG("Editing message text" << chatId << messageId); QVariantMap requestObject; requestObject.insert(_TYPE, "editMessageText"); - requestObject.insert("chat_id", chatId); - requestObject.insert("message_id", messageId); + requestObject.insert(CHAT_ID, chatId); + requestObject.insert(MESSAGE_ID, messageId); QVariantMap inputMessageContent; inputMessageContent.insert(_TYPE, "inputMessageText"); QVariantMap formattedText; @@ -622,7 +623,7 @@ void TDLibWrapper::deleteMessages(const QString &chatId, const QVariantList mess LOG("Deleting some messages" << chatId << messageIds); QVariantMap requestObject; requestObject.insert(_TYPE, "deleteMessages"); - requestObject.insert("chat_id", chatId); + requestObject.insert(CHAT_ID, chatId); requestObject.insert("message_ids", messageIds); requestObject.insert("revoke", true); this->sendRequest(requestObject); @@ -646,7 +647,7 @@ void TDLibWrapper::getMapThumbnailFile(const QString &chatId, double latitude, d requestObject.insert("width", boundsWidth); requestObject.insert("height", boundsHeight); requestObject.insert("scale", 1); // 1-3 - requestObject.insert("chat_id", chatId); + requestObject.insert(CHAT_ID, chatId); this->sendRequest(requestObject); } @@ -782,7 +783,7 @@ void TDLibWrapper::setChatPermissions(const QString &chatId, const QVariantMap & QVariantMap requestObject; requestObject.insert(_TYPE, "setChatPermissions"); requestObject.insert(_EXTRA, chatId); - requestObject.insert("chat_id", chatId); + requestObject.insert(CHAT_ID, chatId); requestObject.insert("permissions", chatPermissions); this->sendRequest(requestObject); } @@ -793,7 +794,7 @@ void TDLibWrapper::setChatSlowModeDelay(const QString &chatId, int delay) LOG("Setting Chat Slow Mode Delay"); QVariantMap requestObject; requestObject.insert(_TYPE, "setChatSlowModeDelay"); - requestObject.insert("chat_id", chatId); + requestObject.insert(CHAT_ID, chatId); requestObject.insert("slow_mode_delay", delay); this->sendRequest(requestObject); } @@ -803,7 +804,7 @@ void TDLibWrapper::setChatDescription(const QString &chatId, const QString &desc LOG("Setting Chat Description"); QVariantMap requestObject; requestObject.insert(_TYPE, "setChatDescription"); - requestObject.insert("chat_id", chatId); + requestObject.insert(CHAT_ID, chatId); requestObject.insert("description", description); this->sendRequest(requestObject); } @@ -813,7 +814,7 @@ void TDLibWrapper::setChatTitle(const QString &chatId, const QString &title) LOG("Setting Chat Title"); QVariantMap requestObject; requestObject.insert(_TYPE, "setChatTitle"); - requestObject.insert("chat_id", chatId); + requestObject.insert(CHAT_ID, chatId); requestObject.insert("title", title); this->sendRequest(requestObject); } @@ -837,35 +838,35 @@ void TDLibWrapper::toggleSupergroupIsAllHistoryAvailable(const QString &groupId, this->sendRequest(requestObject); } -void TDLibWrapper::setPollAnswer(const QString &chatId, const qlonglong &messageId, QVariantList optionIds) +void TDLibWrapper::setPollAnswer(const QString &chatId, qlonglong messageId, QVariantList optionIds) { LOG("Setting Poll Answer"); QVariantMap requestObject; requestObject.insert(_TYPE, "setPollAnswer"); - requestObject.insert("chat_id", chatId); - requestObject.insert("message_id", messageId); + requestObject.insert(CHAT_ID, chatId); + requestObject.insert(MESSAGE_ID, messageId); requestObject.insert("option_ids", optionIds); this->sendRequest(requestObject); } -void TDLibWrapper::stopPoll(const QString &chatId, const qlonglong &messageId) +void TDLibWrapper::stopPoll(const QString &chatId, qlonglong messageId) { LOG("Stopping Poll"); QVariantMap requestObject; requestObject.insert(_TYPE, "stopPoll"); - requestObject.insert("chat_id", chatId); - requestObject.insert("message_id", messageId); + requestObject.insert(CHAT_ID, chatId); + requestObject.insert(MESSAGE_ID, messageId); this->sendRequest(requestObject); } -void TDLibWrapper::getPollVoters(const QString &chatId, const qlonglong &messageId, const int &optionId, const int &limit, const int &offset, const QString &extra) +void TDLibWrapper::getPollVoters(const QString &chatId, qlonglong messageId, int optionId, int limit, int offset, const QString &extra) { LOG("Retrieving Poll Voters"); QVariantMap requestObject; requestObject.insert(_TYPE, "getPollVoters"); requestObject.insert(_EXTRA, extra); - requestObject.insert("chat_id", chatId); - requestObject.insert("message_id", messageId); + requestObject.insert(CHAT_ID, chatId); + requestObject.insert(MESSAGE_ID, messageId); requestObject.insert("option_id", optionId); requestObject.insert("offset", offset); requestObject.insert("limit", limit); //max 50 @@ -878,7 +879,7 @@ void TDLibWrapper::searchPublicChat(const QString &userName) this->activeChatSearchName = userName; QVariantMap requestObject; requestObject.insert(_TYPE, "searchPublicChat"); - requestObject.insert("username", userName); + requestObject.insert(USERNAME, userName); this->sendRequest(requestObject); } @@ -937,12 +938,12 @@ void TDLibWrapper::importContacts(const QVariantList &contacts) this->sendRequest(requestObject); } -void TDLibWrapper::searchChatMessages(const qlonglong &chatId, const QString &query, const qlonglong fromMessageId) +void TDLibWrapper::searchChatMessages(qlonglong chatId, const QString &query, qlonglong fromMessageId) { LOG("Searching for messages" << chatId << query << fromMessageId); QVariantMap requestObject; requestObject.insert(_TYPE, "searchChatMessages"); - requestObject.insert("chat_id", chatId); + requestObject.insert(CHAT_ID, chatId); requestObject.insert("query", query); requestObject.insert("from_message_id", fromMessageId); requestObject.insert("offset", 0); @@ -966,7 +967,7 @@ void TDLibWrapper::readAllChatMentions(qlonglong chatId) LOG("Read all chat mentions" << chatId); QVariantMap requestObject; requestObject.insert(_TYPE, "readAllChatMentions"); - requestObject.insert("chat_id", chatId); + requestObject.insert(CHAT_ID, chatId); this->sendRequest(requestObject); } @@ -1203,9 +1204,9 @@ void TDLibWrapper::handleUserUpdated(const QVariantMap &userInformation) LOG("Own user information updated :)"); this->userInformation = userInformation; } - LOG("User information updated:" << userInformation.value("username").toString() << userInformation.value("first_name").toString() << userInformation.value("last_name").toString()); + LOG("User information updated:" << userInformation.value(USERNAME).toString() << userInformation.value(FIRST_NAME).toString() << userInformation.value(LAST_NAME).toString()); this->allUsers.insert(updatedUserId, userInformation); - this->allUserNames.insert(userInformation.value("username").toString(), userInformation); + this->allUserNames.insert(userInformation.value(USERNAME).toString(), userInformation); emit userUpdated(updatedUserId, userInformation); } @@ -1219,7 +1220,7 @@ void TDLibWrapper::handleUserStatusUpdated(const QString &userId, const QVariant QVariantMap updatedUserInformation = this->allUsers.value(userId).toMap(); updatedUserInformation.insert("status", userStatusInformation); this->allUsers.insert(userId, updatedUserInformation); - this->allUserNames.insert(userInformation.value("username").toString(), userInformation); + this->allUserNames.insert(userInformation.value(USERNAME).toString(), userInformation); emit userUpdated(userId, updatedUserInformation); } @@ -1273,7 +1274,7 @@ void TDLibWrapper::handleUnreadChatCountUpdated(const QVariantMap &chatCountInfo void TDLibWrapper::handleBasicGroupUpdated(qlonglong groupId, const QVariantMap &groupInformation) { emit basicGroupUpdated(updateGroup(groupId, groupInformation, &basicGroups)->groupId); - if (!this->activeChatSearchName.isEmpty() && this->activeChatSearchName == groupInformation.value("username").toString()) { + if (!this->activeChatSearchName.isEmpty() && this->activeChatSearchName == groupInformation.value(USERNAME).toString()) { LOG("Found basic group for active search" << this->activeChatSearchName); this->activeChatSearchName.clear(); this->createBasicGroupChat(groupInformation.value(ID).toString()); @@ -1283,7 +1284,7 @@ void TDLibWrapper::handleBasicGroupUpdated(qlonglong groupId, const QVariantMap void TDLibWrapper::handleSuperGroupUpdated(qlonglong groupId, const QVariantMap &groupInformation) { emit superGroupUpdated(updateGroup(groupId, groupInformation, &superGroups)->groupId); - if (!this->activeChatSearchName.isEmpty() && this->activeChatSearchName == groupInformation.value("username").toString()) { + if (!this->activeChatSearchName.isEmpty() && this->activeChatSearchName == groupInformation.value(USERNAME).toString()) { LOG("Found supergroup for active search" << this->activeChatSearchName); this->activeChatSearchName.clear(); this->createSupergroupChat(groupInformation.value(ID).toString()); @@ -1332,21 +1333,24 @@ void TDLibWrapper::handleStorageOptimizerChanged() setOptionBoolean("use_storage_optimizer", appSettings->storageOptimizer()); } -void TDLibWrapper::handleErrorReceived(const int code, const QString &message, const QString &extra) +void TDLibWrapper::handleErrorReceived(int code, const QString &message, const QString &extra) { - if (code == 404 && extra.startsWith("getMessage:")) { - emit messageNotFound(extra.mid(11).toLongLong()); + if (!extra.isEmpty()) { + QStringList parts(extra.split(':')); + if (parts.size() == 3 && parts.at(0) == QStringLiteral("getMessage")) { + emit messageNotFound(parts.at(1).toLongLong(), parts.at(2).toLongLong()); + } } emit errorReceived(code, message, extra); } -void TDLibWrapper::handleMessageInformation(const QString &messageId, const QVariantMap &receivedInformation) +void TDLibWrapper::handleMessageInformation(qlonglong chatId, qlonglong messageId, const QVariantMap &receivedInformation) { QString extraInformation = receivedInformation.value(_EXTRA).toString(); - if (extraInformation.startsWith("getChatPinnedMessage")) { - emit chatPinnedMessageUpdated(receivedInformation.value(CHAT_ID).toLongLong(), messageId.toLongLong()); + if (extraInformation.startsWith("getChatPinnedMessage:")) { + emit chatPinnedMessageUpdated(chatId, messageId); } - emit receivedMessage(messageId, receivedInformation); + emit receivedMessage(chatId, messageId, receivedInformation); } void TDLibWrapper::handleMessageIsPinnedUpdated(qlonglong chatId, qlonglong messageId, bool isPinned) diff --git a/src/tdlibwrapper.h b/src/tdlibwrapper.h index f51462f..3d35219 100644 --- a/src/tdlibwrapper.h +++ b/src/tdlibwrapper.h @@ -131,7 +131,7 @@ public: Q_INVOKABLE void closeChat(const QString &chatId); Q_INVOKABLE void joinChat(const QString &chatId); Q_INVOKABLE void leaveChat(const QString &chatId); - Q_INVOKABLE void getChatHistory(qlonglong chatId, const qlonglong &fromMessageId = 0, int offset = -1, int limit = 50, bool onlyLocal = false); + Q_INVOKABLE void getChatHistory(qlonglong chatId, qlonglong fromMessageId = 0, int offset = -1, int limit = 50, bool onlyLocal = false); Q_INVOKABLE void viewMessage(const QString &chatId, const QString &messageId, bool force); Q_INVOKABLE void pinMessage(const QString &chatId, const QString &messageId, bool disableNotification = false); Q_INVOKABLE void unpinMessage(const QString &chatId, const QString &messageId); @@ -140,11 +140,11 @@ public: Q_INVOKABLE void sendVideoMessage(const QString &chatId, const QString &filePath, const QString &message, const QString &replyToMessageId = "0"); Q_INVOKABLE void sendDocumentMessage(const QString &chatId, const QString &filePath, const QString &message, const QString &replyToMessageId = "0"); Q_INVOKABLE void sendStickerMessage(const QString &chatId, const QString &fileId, const QString &replyToMessageId = "0"); - Q_INVOKABLE void sendPollMessage(const QString &chatId, const QString &question, const QVariantList &options, const bool &anonymous, const int &correctOption, const bool &multiple, const QString &replyToMessageId = "0"); - Q_INVOKABLE void forwardMessages(const QString &chatId, const QString &fromChatId, const QVariantList &messageIds, const bool sendCopy, const bool removeCaption); - Q_INVOKABLE void getMessage(const QString &chatId, const QString &messageId); + Q_INVOKABLE void sendPollMessage(const QString &chatId, const QString &question, const QVariantList &options, bool anonymous, int correctOption, bool multiple, const QString &replyToMessageId = "0"); + Q_INVOKABLE void forwardMessages(const QString &chatId, const QString &fromChatId, const QVariantList &messageIds, bool sendCopy, bool removeCaption); + Q_INVOKABLE void getMessage(qlonglong chatId, qlonglong messageId); Q_INVOKABLE void getCallbackQueryAnswer(const QString &chatId, const QString &messageId, const QVariantMap &payload); - Q_INVOKABLE void getChatPinnedMessage(const qlonglong &chatId); + Q_INVOKABLE void getChatPinnedMessage(qlonglong chatId); Q_INVOKABLE void setOptionInteger(const QString &optionName, int optionValue); Q_INVOKABLE void setOptionBoolean(const QString &optionName, bool optionValue); Q_INVOKABLE void setChatNotificationSettings(const QString &chatId, const QVariantMap ¬ificationSettings); @@ -169,9 +169,9 @@ public: Q_INVOKABLE void setChatTitle(const QString &chatId, const QString &title); Q_INVOKABLE void setBio(const QString &bio); Q_INVOKABLE void toggleSupergroupIsAllHistoryAvailable(const QString &groupId, bool isAllHistoryAvailable); - Q_INVOKABLE void setPollAnswer(const QString &chatId, const qlonglong &messageId, QVariantList optionIds); - Q_INVOKABLE void stopPoll(const QString &chatId, const qlonglong &messageId); - Q_INVOKABLE void getPollVoters(const QString &chatId, const qlonglong &messageId, const int &optionId, const int &limit, const int &offset, const QString &extra); + Q_INVOKABLE void setPollAnswer(const QString &chatId, qlonglong messageId, QVariantList optionIds); + Q_INVOKABLE void stopPoll(const QString &chatId, qlonglong messageId); + Q_INVOKABLE void getPollVoters(const QString &chatId, qlonglong messageId, int optionId, int limit, int offset, const QString &extra); Q_INVOKABLE void searchPublicChat(const QString &userName); Q_INVOKABLE void joinChatByInviteLink(const QString &inviteLink); Q_INVOKABLE void getDeepLinkInfo(const QString &link); @@ -179,7 +179,7 @@ public: Q_INVOKABLE void getSecretChat(qlonglong secretChatId); Q_INVOKABLE void closeSecretChat(qlonglong secretChatId); Q_INVOKABLE void importContacts(const QVariantList &contacts); - Q_INVOKABLE void searchChatMessages(const qlonglong &chatId, const QString &query, const qlonglong fromMessageId = 0); + Q_INVOKABLE void searchChatMessages(qlonglong chatId, const QString &query, qlonglong fromMessageId = 0); Q_INVOKABLE void searchPublicChats(const QString &query); Q_INVOKABLE void readAllChatMentions(qlonglong chatId); @@ -216,7 +216,7 @@ signals: void newMessageReceived(qlonglong chatId, const QVariantMap &message); void copyToDownloadsSuccessful(const QString &fileName, const QString &filePath); void copyToDownloadsError(const QString &fileName, const QString &filePath); - void receivedMessage(const QString &messageId, const QVariantMap &message); + void receivedMessage(qlonglong chatId, qlonglong messageId, const QVariantMap &message); void messageSendSucceeded(qlonglong messageId, qlonglong oldMessageId, const QVariantMap &message); void activeNotificationsUpdated(const QVariantList notificationGroups); void notificationGroupUpdated(const QVariantMap notificationGroupUpdate); @@ -248,9 +248,9 @@ signals: void chatTitleUpdated(const QString &chatId, const QString &title); void chatPinnedMessageUpdated(qlonglong chatId, qlonglong pinnedMessageId); void usersReceived(const QString &extra, const QVariantList &userIds, int totalUsers); - void errorReceived(const int code, const QString &message, const QString &extra); + void errorReceived(int code, const QString &message, const QString &extra); void contactsImported(const QVariantList &importerCount, const QVariantList &userIds); - void messageNotFound(const qlonglong messageId); + void messageNotFound(qlonglong chatId, qlonglong messageId); public slots: void handleVersionDetected(const QString &version); @@ -272,8 +272,8 @@ public slots: void handleSecretChatReceived(qlonglong secretChatId, const QVariantMap &secretChat); void handleSecretChatUpdated(qlonglong secretChatId, const QVariantMap &secretChat); void handleStorageOptimizerChanged(); - void handleErrorReceived(const int code, const QString &message, const QString &extra); - void handleMessageInformation(const QString &messageId, const QVariantMap &receivedInformation); + void handleErrorReceived(int code, const QString &message, const QString &extra); + void handleMessageInformation(qlonglong chatId, qlonglong messageId, const QVariantMap &receivedInformation); void handleMessageIsPinnedUpdated(qlonglong chatId, qlonglong messageId, bool isPinned); private: