/
lmaxyz
/
telegraf
Обзор
Документация
Войти
/
lmaxyz
/
telegraf
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
src/data/customemojimanager.cpp
59 строк
2 KB
Nikolay Sinyov
- Добавил отображние иконок топиков
03 сен 2025, 16:28
03 сен 2025, 16:28
2f5fc9c
Код
Авторство
О чём код?
#include "customemojimanager.h" #include "../tdlib/tdlibrequestsender.h" #include "../tdlib/tdlibresponsehandler.h" #include "../debuglog.h" CustomEmojiManager* CustomEmojiManager::instance = nullptr; CustomEmojiManager::CustomEmojiManager(QObject *parent) : QObject(parent) { instance = this; connect(TDLibResponseHandler::getInstance(), &TDLibResponseHandler::stickersReceived, this, &CustomEmojiManager::handleStickersReceived); } QVariantMap CustomEmojiManager::getCustomEmoji(const QString &customEmojiId) { return customEmojiCache.value(customEmojiId); } bool CustomEmojiManager::hasCustomEmoji(const QString &customEmojiId) { return customEmojiCache.contains(customEmojiId); } void CustomEmojiManager::requestCustomEmoji(const QString &customEmojiId) { LOG_DEBUG(LOG_TDLIB_FILES, "CustomEmojiManager::requestCustomEmoji called with ID: " << customEmojiId); if (customEmojiId.isEmpty() || customEmojiId == "0" || hasCustomEmoji(customEmojiId) || pendingRequests.contains(customEmojiId)) { LOG_DEBUG(LOG_TDLIB_FILES, "Skipping request - empty: " << customEmojiId.isEmpty() << " zero: " << (customEmojiId == "0") << " hasCache: " << hasCustomEmoji(customEmojiId) << " pending: " << pendingRequests.contains(customEmojiId)); return; } pendingRequests.append(customEmojiId); QVariantList emojiIds; emojiIds.append(customEmojiId); LOG_DEBUG(LOG_TDLIB_FILES, "Calling TDLib getCustomEmojiStickers via factory with ID: " << customEmojiId); TDLibRequestSender::getInstance()->callGetCustomEmojiStickers(emojiIds); } void CustomEmojiManager::handleStickersReceived(const QVariantList &stickers) { LOG_DEBUG(LOG_TDLIB_FILES, "CustomEmojiManager::handleStickersReceived called with " << stickers.size() << " stickers"); for (const auto &stickerVariant : stickers) { QVariantMap sticker = stickerVariant.toMap(); QString stickerId = sticker.value("id").toString(); QString emoji = sticker.value("emoji").toString(); LOG_DEBUG(LOG_TDLIB_FILES, "Processing sticker with id: " << stickerId << " emoji: " << emoji); if (!stickerId.isEmpty() && !emoji.isEmpty()) { customEmojiCache.insert(stickerId, sticker); pendingRequests.removeAll(stickerId); LOG_DEBUG(LOG_TDLIB_FILES, "Emitting customEmojiReceived for ID: " << stickerId); emit customEmojiReceived(stickerId, sticker); } } }