/
alexashkin
/
telegraph
Обзор
Документация
Войти
/
alexashkin
/
telegraph
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
src/tdlib/tdlibresponsehandler.h
199 строк
12 KB
mbarashkov
Завершение ВЕЛИКОЛЕПНОГО рефакторинга
21 фев 2025, 20:32
21 фев 2025, 20:32
b9fcdf4
Код
Авторство
О чём код?
#pragma once #include <QCoreApplication> #include "tdlibreceiver.h" #include "../appsettings.h" #include "tdlibrequestfactory.h" #include "tdlibrequestservice.h" #include "tdlibrequestsender.h" #include "tdlibstate.h" #include "tdlibconstants.h" #include "../data/tdlibcache.h" #include "../device/osservice.h" class TDLibResponseHandler : public QObject { Q_OBJECT Q_PROPERTY(TDLibConstants::AuthorizationState authorizationState READ getAuthorizationState NOTIFY authorizationStateChanged) Q_PROPERTY(QVariantMap userInformation READ getMyUserInformation NOTIFY myUserUpdated) public: explicit TDLibResponseHandler(AppSettings *appSettings, TDLibState* tdLibState, TDLibRequestFactory* requestFactory, TDLibRequestService *requestService, TDLibRequestSender *requestSender, QString dbPath, QObject *parent = nullptr); ~TDLibResponseHandler(); class Group { public: Group(qlonglong id) : groupId(id) {} TDLibConstants::ChatMemberStatus chatMemberStatus() const; public: const qlonglong groupId; QVariantMap groupInfo; }; Q_INVOKABLE QString getVersion(); Q_INVOKABLE TDLibConstants::AuthorizationState getAuthorizationState(); Q_INVOKABLE QVariantMap getAuthorizationStateData(); Q_INVOKABLE TDLibConstants::ConnectionState getConnectionState(); Q_INVOKABLE qlonglong getMyUserId(); Q_INVOKABLE QVariantMap getMyUserInformation(); Q_INVOKABLE QVariantMap getUserInformation(const qlonglong userId); Q_INVOKABLE QString getUserName(const qlonglong userId); bool hasUserInformation(const qlonglong userId); Q_INVOKABLE QVariantMap getUserInformationByName(const QString &userName); Q_INVOKABLE TDLibConstants::UserPrivacySettingRule getUserPrivacySettingRule(TDLibConstants::UserPrivacySetting userPrivacySetting); Q_INVOKABLE QVariantMap getUnreadMessageInformation(); Q_INVOKABLE QVariantMap getUnreadChatInformation(); Q_INVOKABLE QVariantMap getBasicGroup(qlonglong groupId) const; Q_INVOKABLE QVariantMap getSuperGroup(qlonglong groupId) const; Q_INVOKABLE QVariantMap getChat(const qlonglong chatId) const; Q_INVOKABLE QVariantMap getSecretChatFromCache(qlonglong secretChatId); Q_INVOKABLE QStringList getChatReactions(const qlonglong chatId) const; Q_INVOKABLE QString getUrlPrefix() const; Q_INVOKABLE bool getJoinChatRequested(); Q_INVOKABLE void registerJoinChat(); public: const Group *getGroup(qlonglong groupId) const; TDLibRequestSender* getRequestSender() const { return const_cast<TDLibRequestSender*>(requestSender); } signals: void versionDetected(const QString &version); void ownUserIdFound(const qlonglong ownUserId); void authorizationStateChanged(const TDLibConstants::AuthorizationState &authorizationState, const QVariantMap &authorizationStateData); void connectionStateChanged(const TDLibConstants::ConnectionState &connectionState); void fileUpdated(int fileId, const QVariantMap &fileInformation); void newChatDiscovered(const QString &chatId, const QVariantMap &chatInformation); void chatFolders(const QVariantList &folders, qlonglong mainChatlistPosition); void chatInArchive(const qlonglong chatId); void chatFolder(const QVariantMap &chatFolderInformation); void unreadMessageCountUpdated(const QVariantMap &messageCountInformation); void unreadFolderMessageCountUpdated(const QVariantMap &messageCountInformation); void unreadArchiveMessageCountUpdated(const QVariantMap &messageCountInformation); void unreadChatCountUpdated(const QVariantMap &chatCountInformation); void chatLastMessageUpdated(const QString &chatId, const QString &order, const QVariantMap &lastMessage); void chatOrderUpdated(const QString &chatId, const QString &order, const QString &chatListName); void chatPinnedUpdated(qlonglong chatId, bool isPinned, const QString &chatListName); void chatReadInboxUpdated(const QString &chatId, const QString &lastReadInboxMessageId, int unreadCount); void chatReadOutboxUpdated(const QString &chatId, const QString &lastReadOutboxMessageId); void chatAvailableReactionsUpdated(const qlonglong &chatId, const QVariantMap &availableReactions); void userUpdated(const qlonglong userId, const QVariantMap &userInformation); void myUserUpdated(const QVariantMap &userInformation); void basicGroupUpdated(qlonglong groupId); void superGroupUpdated(qlonglong groupId); void chatOnlineMemberCountUpdated(const QString &chatId, int onlineMemberCount); void messagesReceived(const QVariantList &messages, int totalCount); void sponsoredMessageReceived(qlonglong chatId, const QVariantMap &message); void messageLinkInfoReceived(const QString &url, const QVariantMap &messageLinkInfo, const QString &extra); void newMessageReceived(qlonglong chatId, 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); void notificationUpdated(const QVariantMap updatedNotification); void chatNotificationSettingsUpdated(const QString &chatId, const QVariantMap chatNotificationSettings); void messageContentUpdated(qlonglong chatId, qlonglong messageId, const QVariantMap &newContent); void messageEditedUpdated(qlonglong chatId, qlonglong messageId, const QVariantMap &replyMarkup); void messagesDeleted(qlonglong chatId, const QList<qlonglong> &messageIds); void chatsReceived(const QVariantMap &chats); void chatReceived(const QVariantMap &chat); void secretChatReceived(qlonglong secretChatId, const QVariantMap &secretChat); void secretChatUpdated(qlonglong secretChatId, const QVariantMap &secretChat); void recentStickersUpdated(const QVariantList &stickerIds); void stickersReceived(const QVariantList &stickers); void installedStickerSetsUpdated(const QVariantList &stickerSetIds); void stickerSetsReceived(const QVariantList &stickerSets); void stickerSetReceived(const QVariantMap &stickerSet); void chatMembersReceived(const QString &extra, const QVariantList &members, int totalMembers); void userFullInfoReceived(const QVariantMap &userFullInfo); void userFullInfoUpdated(const QString &userId, const QVariantMap &userFullInfo); void basicGroupFullInfoReceived(const QString &groupId, const QVariantMap &groupFullInfo); void supergroupFullInfoReceived(const QString &groupId, const QVariantMap &groupFullInfo); void basicGroupFullInfoUpdated(const QString &groupId, const QVariantMap &groupFullInfo); void supergroupFullInfoUpdated(const QString &groupId, const QVariantMap &groupFullInfo); void userProfilePhotosReceived(const QString &extra, const QVariantList &photos, int totalPhotos); void chatPermissionsUpdated(const QString &chatId, const QVariantMap &permissions); void chatPhotoUpdated(qlonglong chatId, const QVariantMap &photo); 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 messageSendersReceived(const QString &extra, const QVariantList &senders, int totalUsers); void errorReceived(int code, const QString &message, const QString &extra); void contactsImported(const QVariantList &importerCount, const QVariantList &userIds); void messageNotFound(qlonglong chatId, qlonglong messageId); void chatIsMarkedAsUnreadUpdated(qlonglong chatId, bool chatIsMarkedAsUnread); void chatDraftMessageUpdated(qlonglong chatId, const QVariantMap &draftMessage, const QString &order); void inlineQueryResults(const QString &inlineQueryId, const QString &nextOffset, const QVariantList &results, const QString &switchPmText, const QString &switchPmParameter, const QString &extra); void callbackQueryAnswer(const QString &text, bool alert, const QString &url); void userPrivacySettingUpdated(TDLibConstants::UserPrivacySetting setting, TDLibConstants::UserPrivacySettingRule rule); void messageInteractionInfoUpdated(qlonglong chatId, qlonglong messageId, const QVariantMap &updatedInfo); void okReceived(const QString &request); void sessionsReceived(int inactive_session_ttl_days, const QVariantList &sessions); void openFileExternally(const QString &filePath); void availableReactionsReceived(qlonglong messageId, const QStringList &reactions); void chatUnreadMentionCountUpdated(qlonglong chatId, int unreadMentionCount); void chatUnreadReactionCountUpdated(qlonglong chatId, int unreadReactionCount); void reactionsUpdated(); public slots: void handleVersionDetected(const QString &version); void handleAuthorizationStateChanged(const QString &authorizationState, const QVariantMap authorizationStateData); void handleOptionUpdated(const QString &optionName, const QVariant &optionValue); void handleConnectionStateChanged(const QString &connectionState); void handleUserUpdated(const QVariantMap &updatedUserInformation); void handleUserStatusUpdated(const qlonglong userId, const QVariantMap &userStatusInformation); void handleFileUpdated(const QVariantMap &fileInformation); void handleNewChatDiscovered(const QVariantMap &chatInformation); void handleChatFolders(const QVariantList &foldersInformation, qlonglong mainChatlistPosition); void handleChatFolder(const QVariantMap &chatFolderInformation); void handleChatReceived(const QVariantMap &chatInformation); void handleUnreadMessageCountUpdated(const QVariantMap &messageCountInformation); void handleUnreadChatCountUpdated(const QVariantMap &chatCountInformation); void handleAvailableReactionsUpdated(qlonglong chatId, const QVariantMap &availableReactions); void handleBasicGroupUpdated(qlonglong groupId, const QVariantMap &groupInformation); void handleSuperGroupUpdated(qlonglong groupId, const QVariantMap &groupInformation); void handleStickerSets(const QVariantList &stickerSets); void handleSecretChatReceived(qlonglong secretChatId, const QVariantMap &secretChat); void handleSecretChatUpdated(qlonglong secretChatId, const QVariantMap &secretChat); 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); void handleUserPrivacySettingRules(const QVariantMap &rules); void handleUpdatedUserPrivacySettingRules(const QVariantMap &updatedRules); void handleSponsoredMessage(qlonglong chatId, const QVariantMap &message); void handleActiveEmojiReactionsUpdated(const QStringList &emojis); void handleOkOrErrorReceived(const QJsonObject &jsonResponse); private: void setOption(const QString &name, const QString &type, const QVariant &value); const Group *updateGroup(qlonglong groupId, const QVariantMap &groupInfo, QHash<qlonglong, Group *> *groups); void initializeTDLibReceiver(); void updateUserInformation(const qlonglong userId, const QVariantMap &userInformation); private: QString dbPath; AppSettings *_appSettings; TDLibReceiver *_tdLibReceiver; TDLibConstants::AuthorizationState _authorizationState; QVariantMap _authorizationStateData; TDLibConstants::ConnectionState _connectionState; QVariantMap _options; QMap<qlonglong, QVariantMap> _secretChats; QVariantMap _unreadMessageInformation; QVariantMap _unreadChatInformation; QHash<qlonglong, Group *> _basicGroups; QHash<qlonglong, Group *> _superGroups; QStringList _activeEmojiReactions; qlonglong myUserId = 0; bool _allMainChatsLoaded; TDLibState *tdLibState; TDLibRequestFactory *requestFactory; TDLibRequestService *requestService; TDLibRequestSender *requestSender; TDLibCache cache; };