From c92f741a83c95dc5ea38e32edd75da2363c699a1 Mon Sep 17 00:00:00 2001 From: levlam Date: Fri, 2 Sep 2022 18:18:18 +0300 Subject: [PATCH] Add get_sticker_type function. --- td/telegram/StickerType.cpp | 10 ++++++++++ td/telegram/StickerType.h | 2 ++ td/telegram/StickersManager.hpp | 15 ++------------- td/telegram/UpdatesManager.cpp | 14 ++------------ 4 files changed, 16 insertions(+), 25 deletions(-) diff --git a/td/telegram/StickerType.cpp b/td/telegram/StickerType.cpp index f635242b1..4b17753ba 100644 --- a/td/telegram/StickerType.cpp +++ b/td/telegram/StickerType.cpp @@ -8,6 +8,16 @@ namespace td { +StickerType get_sticker_type(bool is_mask, bool is_custom_emoji) { + if (is_custom_emoji) { + return StickerType::CustomEmoji; + } + if (is_mask) { + return StickerType::Mask; + } + return StickerType::Regular; +} + StickerType get_sticker_type(const td_api::object_ptr &type) { if (type == nullptr) { return StickerType::Regular; diff --git a/td/telegram/StickerType.h b/td/telegram/StickerType.h index 46fa08796..d4e2f18d1 100644 --- a/td/telegram/StickerType.h +++ b/td/telegram/StickerType.h @@ -18,6 +18,8 @@ enum class StickerType : int32 { Regular, Mask, CustomEmoji }; static constexpr int32 MAX_STICKER_TYPE = 3; +StickerType get_sticker_type(bool is_mask, bool is_custom_emoji); + StickerType get_sticker_type(const td_api::object_ptr &type); td_api::object_ptr get_sticker_type_object(StickerType sticker_type); diff --git a/td/telegram/StickersManager.hpp b/td/telegram/StickersManager.hpp index 14b78eb61..b425488ff 100644 --- a/td/telegram/StickersManager.hpp +++ b/td/telegram/StickersManager.hpp @@ -113,13 +113,7 @@ FileId StickersManager::parse_sticker(bool in_sticker_set, ParserT &parser) { } else { sticker->format_ = StickerFormat::Webp; } - if (is_emoji) { - sticker->type_ = StickerType::CustomEmoji; - } else if (is_mask) { - sticker->type_ = StickerType::Mask; - } else { - sticker->type_ = StickerType::Regular; - } + sticker->type_ = ::td::get_sticker_type(is_mask, is_emoji); if (in_sticker_set_stored != in_sticker_set) { Slice data = parser.template fetch_string_raw(parser.get_left_len()); for (auto c : data) { @@ -299,12 +293,7 @@ void StickersManager::parse_sticker_set(StickerSet *sticker_set, ParserT &parser } else { sticker_format = StickerFormat::Webp; } - StickerType sticker_type = StickerType::Regular; - if (is_emojis) { - sticker_type = StickerType::CustomEmoji; - } else if (is_masks) { - sticker_type = StickerType::Mask; - } + auto sticker_type = ::td::get_sticker_type(is_masks, is_emojis); if (sticker_set->is_inited_) { string title; diff --git a/td/telegram/UpdatesManager.cpp b/td/telegram/UpdatesManager.cpp index bbefbfa88..2b8b25db7 100644 --- a/td/telegram/UpdatesManager.cpp +++ b/td/telegram/UpdatesManager.cpp @@ -3368,23 +3368,13 @@ void UpdatesManager::on_update(tl_object_ptr } void UpdatesManager::on_update(tl_object_ptr update, Promise &&promise) { - StickerType sticker_type = StickerType::Regular; - if (update->emojis_) { - sticker_type = StickerType::CustomEmoji; - } else if (update->masks_) { - sticker_type = StickerType::Mask; - } + auto sticker_type = get_sticker_type(update->masks_, update->emojis_); td_->stickers_manager_->on_update_sticker_sets(sticker_type); promise.set_value(Unit()); } void UpdatesManager::on_update(tl_object_ptr update, Promise &&promise) { - StickerType sticker_type = StickerType::Regular; - if (update->emojis_) { - sticker_type = StickerType::CustomEmoji; - } else if (update->masks_) { - sticker_type = StickerType::Mask; - } + auto sticker_type = get_sticker_type(update->masks_, update->emojis_); td_->stickers_manager_->on_update_sticker_sets_order(sticker_type, StickersManager::convert_sticker_set_ids(update->order_)); promise.set_value(Unit());