Explicitly fail some promises on closing.
This commit is contained in:
parent
fb79543d41
commit
1a732db19e
@ -4707,6 +4707,7 @@ void StickersManager::search_stickers(string emoji, int32 limit,
|
||||
|
||||
void StickersManager::on_load_found_stickers_from_database(string emoji, string value) {
|
||||
if (G()->close_flag()) {
|
||||
on_search_stickers_failed(emoji, G()->close_status());
|
||||
return;
|
||||
}
|
||||
if (value.empty()) {
|
||||
@ -4744,6 +4745,18 @@ void StickersManager::on_search_stickers_finished(const string &emoji, const Fou
|
||||
}
|
||||
}
|
||||
|
||||
void StickersManager::on_search_stickers_failed(const string &emoji, Status &&error) {
|
||||
auto it = search_stickers_queries_.find(emoji);
|
||||
CHECK(it != search_stickers_queries_.end());
|
||||
CHECK(!it->second.empty());
|
||||
auto queries = std::move(it->second);
|
||||
search_stickers_queries_.erase(it);
|
||||
|
||||
for (auto &query : queries) {
|
||||
query.second.set_error(error.clone());
|
||||
}
|
||||
}
|
||||
|
||||
void StickersManager::on_find_stickers_success(const string &emoji,
|
||||
tl_object_ptr<telegram_api::messages_Stickers> &&stickers) {
|
||||
CHECK(stickers != nullptr);
|
||||
@ -4791,15 +4804,7 @@ void StickersManager::on_find_stickers_fail(const string &emoji, Status &&error)
|
||||
return on_find_stickers_success(emoji, make_tl_object<telegram_api::messages_stickersNotModified>());
|
||||
}
|
||||
|
||||
auto it = search_stickers_queries_.find(emoji);
|
||||
CHECK(it != search_stickers_queries_.end());
|
||||
CHECK(!it->second.empty());
|
||||
auto queries = std::move(it->second);
|
||||
search_stickers_queries_.erase(it);
|
||||
|
||||
for (auto &query : queries) {
|
||||
query.second.set_error(error.clone());
|
||||
}
|
||||
on_search_stickers_failed(emoji, std::move(error));
|
||||
}
|
||||
|
||||
void StickersManager::get_premium_stickers(int32 limit, Promise<td_api::object_ptr<td_api::stickers>> &&promise) {
|
||||
@ -5162,6 +5167,7 @@ void StickersManager::load_installed_sticker_sets(StickerType sticker_type, Prom
|
||||
|
||||
void StickersManager::on_load_installed_sticker_sets_from_database(StickerType sticker_type, string value) {
|
||||
if (G()->close_flag()) {
|
||||
on_get_installed_sticker_sets_failed(sticker_type, G()->close_status());
|
||||
return;
|
||||
}
|
||||
if (value.empty()) {
|
||||
@ -6134,7 +6140,14 @@ void StickersManager::load_custom_emoji_sticker_from_database(CustomEmojiId cust
|
||||
}
|
||||
|
||||
void StickersManager::on_load_custom_emoji_from_database(CustomEmojiId custom_emoji_id, string value) {
|
||||
auto it = custom_emoji_load_queries_.find(custom_emoji_id);
|
||||
CHECK(it != custom_emoji_load_queries_.end());
|
||||
CHECK(!it->second.empty());
|
||||
auto promises = std::move(it->second);
|
||||
custom_emoji_load_queries_.erase(it);
|
||||
|
||||
if (G()->close_flag()) {
|
||||
fail_promises(promises, G()->close_status());
|
||||
return;
|
||||
}
|
||||
|
||||
@ -6149,12 +6162,6 @@ void StickersManager::on_load_custom_emoji_from_database(CustomEmojiId custom_em
|
||||
LOG(INFO) << "Failed to load " << custom_emoji_id << " from database";
|
||||
}
|
||||
|
||||
auto it = custom_emoji_load_queries_.find(custom_emoji_id);
|
||||
CHECK(it != custom_emoji_load_queries_.end());
|
||||
CHECK(!it->second.empty());
|
||||
auto promises = std::move(it->second);
|
||||
custom_emoji_load_queries_.erase(it);
|
||||
|
||||
set_promises(promises);
|
||||
}
|
||||
|
||||
@ -8377,6 +8384,7 @@ void StickersManager::load_recent_stickers(bool is_attached, Promise<Unit> &&pro
|
||||
|
||||
void StickersManager::on_load_recent_stickers_from_database(bool is_attached, string value) {
|
||||
if (G()->close_flag()) {
|
||||
fail_promises(load_recent_stickers_queries_[is_attached], G()->close_status());
|
||||
return;
|
||||
}
|
||||
if (value.empty()) {
|
||||
@ -8777,6 +8785,7 @@ void StickersManager::load_favorite_stickers(Promise<Unit> &&promise) {
|
||||
|
||||
void StickersManager::on_load_favorite_stickers_from_database(const string &value) {
|
||||
if (G()->close_flag()) {
|
||||
fail_promises(load_favorite_stickers_queries_, G()->close_status());
|
||||
return;
|
||||
}
|
||||
if (value.empty()) {
|
||||
|
@ -627,6 +627,8 @@ class StickersManager final : public Actor {
|
||||
|
||||
void on_search_stickers_finished(const string &emoji, const FoundStickers &found_stickers);
|
||||
|
||||
void on_search_stickers_failed(const string &emoji, Status &&error);
|
||||
|
||||
static string get_custom_emoji_database_key(CustomEmojiId custom_emoji_id);
|
||||
|
||||
void load_custom_emoji_sticker_from_database_force(CustomEmojiId custom_emoji_id);
|
||||
|
Loading…
x
Reference in New Issue
Block a user