From 0d4c918feafe097b7cefb24135d35db1eb99e4e8 Mon Sep 17 00:00:00 2001 From: levlam Date: Wed, 21 Dec 2022 15:18:42 +0300 Subject: [PATCH] Reload emoji sticker sets once. --- td/telegram/StickersManager.cpp | 5 +++-- td/telegram/StickersManager.h | 13 +++++++------ td/telegram/StickersManager.hpp | 5 +++++ 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/td/telegram/StickersManager.cpp b/td/telegram/StickersManager.cpp index 06f9134bc..fe42fae13 100644 --- a/td/telegram/StickersManager.cpp +++ b/td/telegram/StickersManager.cpp @@ -3715,6 +3715,7 @@ StickerSetId StickersManager::on_get_messages_sticker_set(StickerSetId sticker_s s->is_loaded_ = true; s->is_changed_ = true; s->are_keywords_loaded_ = true; + s->is_sticker_has_text_color_loaded_ = true; FlatHashMap document_id_to_sticker_id; @@ -5415,8 +5416,8 @@ void StickersManager::on_load_sticker_set_from_database(StickerSetId sticker_set << format::as_hex_dump<4>(Slice(value)); } } - if (!sticker_set->are_keywords_loaded_ || !sticker_set->is_thumbnail_reloaded_ || - !sticker_set->are_legacy_sticker_thumbnails_reloaded_) { + if (!sticker_set->is_sticker_has_text_color_loaded_ || !sticker_set->are_keywords_loaded_ || + !sticker_set->is_thumbnail_reloaded_ || !sticker_set->are_legacy_sticker_thumbnails_reloaded_) { do_reload_sticker_set(sticker_set_id, get_input_sticker_set(sticker_set), 0, Auto(), "on_load_sticker_set_from_database 2"); } diff --git a/td/telegram/StickersManager.h b/td/telegram/StickersManager.h index 01e177aa1..9d77aa688 100644 --- a/td/telegram/StickersManager.h +++ b/td/telegram/StickersManager.h @@ -448,7 +448,8 @@ class StickersManager final : public Actor { bool is_inited_ = false; // basic information about the set bool was_loaded_ = false; bool is_loaded_ = false; - bool are_keywords_loaded_ = false; + bool are_keywords_loaded_ = false; // stored in telegram_api::messages_stickerSet + bool is_sticker_has_text_color_loaded_ = false; // stored in telegram_api::messages_stickerSet StickerSetId id_; int64 access_hash_ = 0; @@ -475,11 +476,11 @@ class StickersManager final : public Actor { bool is_archived_ = false; bool is_official_ = false; bool is_viewed_ = true; - bool is_thumbnail_reloaded_ = false; - bool are_legacy_sticker_thumbnails_reloaded_ = false; - mutable bool was_update_sent_ = false; // does the sticker set is known to the client - bool is_changed_ = true; // have new changes that need to be sent to the client and database - bool need_save_to_database_ = true; // have new changes that need only to be saved to the database + bool is_thumbnail_reloaded_ = false; // stored in telegram_api::stickerSet + bool are_legacy_sticker_thumbnails_reloaded_ = false; // stored in telegram_api::stickerSet + mutable bool was_update_sent_ = false; // does the sticker set is known to the client + bool is_changed_ = true; // have new changes that need to be sent to the client and database + bool need_save_to_database_ = true; // have new changes that need only to be saved to the database vector load_requests_; vector load_without_stickers_requests_; diff --git a/td/telegram/StickersManager.hpp b/td/telegram/StickersManager.hpp index efb0d6c1a..f884af046 100644 --- a/td/telegram/StickersManager.hpp +++ b/td/telegram/StickersManager.hpp @@ -207,6 +207,7 @@ void StickersManager::store_sticker_set(const StickerSet *sticker_set, bool with STORE_FLAG(is_emojis); STORE_FLAG(has_thumbnail_document_id); STORE_FLAG(sticker_set->are_keywords_loaded_); + STORE_FLAG(sticker_set->is_sticker_has_text_color_loaded_); END_STORE_FLAGS(); store(sticker_set->id_.get(), storer); store(sticker_set->access_hash_, storer); @@ -289,6 +290,7 @@ void StickersManager::parse_sticker_set(StickerSet *sticker_set, ParserT &parser PARSE_FLAG(is_emojis); PARSE_FLAG(has_thumbnail_document_id); PARSE_FLAG(sticker_set->are_keywords_loaded_); + PARSE_FLAG(sticker_set->is_sticker_has_text_color_loaded_); END_PARSE_FLAGS(); int64 sticker_set_id; int64 access_hash; @@ -306,6 +308,9 @@ void StickersManager::parse_sticker_set(StickerSet *sticker_set, ParserT &parser sticker_format = StickerFormat::Webp; } auto sticker_type = ::td::get_sticker_type(is_masks, is_emojis); + if (!is_emojis) { + sticker_set->is_sticker_has_text_color_loaded_ = true; + } if (sticker_set->is_inited_) { string title;