Skip to content

Commit 163e739

Browse files
committed
Add set_promises/fail_promises helper functions.
1 parent 4612910 commit 163e739

25 files changed

+146
-376
lines changed

td/telegram/AnimationsManager.cpp

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -588,11 +588,7 @@ void AnimationsManager::on_load_saved_animations_finished(vector<FileId> &&saved
588588
saved_animation_ids_ = std::move(saved_animation_ids);
589589
are_saved_animations_loaded_ = true;
590590
send_update_saved_animations(from_database);
591-
auto promises = std::move(load_saved_animations_queries_);
592-
load_saved_animations_queries_.clear();
593-
for (auto &promise : promises) {
594-
promise.set_value(Unit());
595-
}
591+
set_promises(load_saved_animations_queries_);
596592
}
597593

598594
void AnimationsManager::on_get_saved_animations(
@@ -637,11 +633,7 @@ void AnimationsManager::on_get_saved_animations(
637633
}
638634

639635
if (is_repair) {
640-
auto promises = std::move(repair_saved_animations_queries_);
641-
repair_saved_animations_queries_.clear();
642-
for (auto &promise : promises) {
643-
promise.set_value(Unit());
644-
}
636+
set_promises(repair_saved_animations_queries_);
645637
} else {
646638
on_load_saved_animations_finished(std::move(saved_animation_ids));
647639

@@ -657,12 +649,7 @@ void AnimationsManager::on_get_saved_animations_failed(bool is_repair, Status er
657649
are_saved_animations_being_loaded_ = false;
658650
next_saved_animations_load_time_ = Time::now_cached() + Random::fast(5, 10);
659651
}
660-
auto &queries = is_repair ? repair_saved_animations_queries_ : load_saved_animations_queries_;
661-
auto promises = std::move(queries);
662-
queries.clear();
663-
for (auto &promise : promises) {
664-
promise.set_error(error.clone());
665-
}
652+
fail_promises(is_repair ? repair_saved_animations_queries_ : load_saved_animations_queries_, std::move(error));
666653
}
667654

668655
int64 AnimationsManager::get_saved_animations_hash(const char *source) const {

td/telegram/BackgroundManager.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -565,9 +565,7 @@ void BackgroundManager::on_load_background_from_database(string name, string val
565565
}
566566
}
567567

568-
for (auto &promise : promises) {
569-
promise.set_value(Unit());
570-
}
568+
set_promises(promises);
571569
}
572570

573571
td_api::object_ptr<td_api::updateSelectedBackground> BackgroundManager::get_update_selected_background_object(

td/telegram/ConfigManager.cpp

Lines changed: 15 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1147,62 +1147,42 @@ void ConfigManager::on_result(NetQueryPtr res) {
11471147

11481148
auto result_ptr = fetch_result<telegram_api::help_dismissSuggestion>(std::move(res));
11491149
if (result_ptr.is_error()) {
1150-
for (auto &promise : promises) {
1151-
promise.set_error(result_ptr.error().clone());
1152-
}
1150+
fail_promises(promises, result_ptr.move_as_error());
11531151
return;
11541152
}
11551153
remove_suggested_action(suggested_actions_, suggested_action);
11561154
reget_app_config(Auto());
11571155

1158-
for (auto &promise : promises) {
1159-
promise.set_value(Unit());
1160-
}
1156+
set_promises(promises);
11611157
return;
11621158
}
11631159
if (token == 6 || token == 7) {
11641160
is_set_archive_and_mute_request_sent_ = false;
11651161
bool archive_and_mute = (token == 7);
1166-
auto promises = std::move(set_archive_and_mute_queries_[archive_and_mute]);
1167-
set_archive_and_mute_queries_[archive_and_mute].clear();
1168-
CHECK(!promises.empty());
11691162
auto result_ptr = fetch_result<telegram_api::account_setGlobalPrivacySettings>(std::move(res));
11701163
if (result_ptr.is_error()) {
1171-
for (auto &promise : promises) {
1172-
promise.set_error(result_ptr.error().clone());
1173-
}
1164+
fail_promises(set_archive_and_mute_queries_[archive_and_mute], result_ptr.move_as_error());
11741165
} else {
11751166
if (last_set_archive_and_mute_ == archive_and_mute) {
11761167
do_set_archive_and_mute(archive_and_mute);
11771168
}
11781169

1179-
for (auto &promise : promises) {
1180-
promise.set_value(Unit());
1181-
}
1170+
set_promises(set_archive_and_mute_queries_[archive_and_mute]);
11821171
}
11831172

11841173
if (!set_archive_and_mute_queries_[!archive_and_mute].empty()) {
11851174
if (archive_and_mute == last_set_archive_and_mute_) {
1186-
promises = std::move(set_archive_and_mute_queries_[!archive_and_mute]);
1187-
set_archive_and_mute_queries_[!archive_and_mute].clear();
1188-
for (auto &promise : promises) {
1189-
promise.set_value(Unit());
1190-
}
1175+
set_promises(set_archive_and_mute_queries_[!archive_and_mute]);
11911176
} else {
11921177
set_archive_and_mute(!archive_and_mute, Auto());
11931178
}
11941179
}
11951180
return;
11961181
}
11971182
if (token == 5) {
1198-
auto promises = std::move(get_global_privacy_settings_queries_);
1199-
get_global_privacy_settings_queries_.clear();
1200-
CHECK(!promises.empty());
12011183
auto result_ptr = fetch_result<telegram_api::account_getGlobalPrivacySettings>(std::move(res));
12021184
if (result_ptr.is_error()) {
1203-
for (auto &promise : promises) {
1204-
promise.set_error(result_ptr.error().clone());
1205-
}
1185+
fail_promises(get_global_privacy_settings_queries_, result_ptr.move_as_error());
12061186
return;
12071187
}
12081188

@@ -1213,65 +1193,45 @@ void ConfigManager::on_result(NetQueryPtr res) {
12131193
LOG(ERROR) << "Receive wrong response: " << to_string(result);
12141194
}
12151195

1216-
for (auto &promise : promises) {
1217-
promise.set_value(Unit());
1218-
}
1196+
set_promises(get_global_privacy_settings_queries_);
12191197
return;
12201198
}
12211199
if (token == 3 || token == 4) {
12221200
is_set_content_settings_request_sent_ = false;
12231201
bool ignore_sensitive_content_restrictions = (token == 4);
1224-
auto promises = std::move(set_content_settings_queries_[ignore_sensitive_content_restrictions]);
1225-
set_content_settings_queries_[ignore_sensitive_content_restrictions].clear();
1226-
CHECK(!promises.empty());
12271202
auto result_ptr = fetch_result<telegram_api::account_setContentSettings>(std::move(res));
12281203
if (result_ptr.is_error()) {
1229-
for (auto &promise : promises) {
1230-
promise.set_error(result_ptr.error().clone());
1231-
}
1204+
fail_promises(set_content_settings_queries_[ignore_sensitive_content_restrictions], result_ptr.move_as_error());
12321205
} else {
12331206
if (G()->shared_config().get_option_boolean("can_ignore_sensitive_content_restrictions") &&
12341207
last_set_content_settings_ == ignore_sensitive_content_restrictions) {
12351208
do_set_ignore_sensitive_content_restrictions(ignore_sensitive_content_restrictions);
12361209
}
12371210

1238-
for (auto &promise : promises) {
1239-
promise.set_value(Unit());
1240-
}
1211+
set_promises(set_content_settings_queries_[ignore_sensitive_content_restrictions]);
12411212
}
12421213

12431214
if (!set_content_settings_queries_[!ignore_sensitive_content_restrictions].empty()) {
12441215
if (ignore_sensitive_content_restrictions == last_set_content_settings_) {
1245-
promises = std::move(set_content_settings_queries_[!ignore_sensitive_content_restrictions]);
1246-
set_content_settings_queries_[!ignore_sensitive_content_restrictions].clear();
1247-
for (auto &promise : promises) {
1248-
promise.set_value(Unit());
1249-
}
1216+
set_promises(set_content_settings_queries_[!ignore_sensitive_content_restrictions]);
12501217
} else {
12511218
set_content_settings(!ignore_sensitive_content_restrictions, Auto());
12521219
}
12531220
}
12541221
return;
12551222
}
12561223
if (token == 2) {
1257-
auto promises = std::move(get_content_settings_queries_);
1258-
get_content_settings_queries_.clear();
1259-
CHECK(!promises.empty());
12601224
auto result_ptr = fetch_result<telegram_api::account_getContentSettings>(std::move(res));
12611225
if (result_ptr.is_error()) {
1262-
for (auto &promise : promises) {
1263-
promise.set_error(result_ptr.error().clone());
1264-
}
1226+
fail_promises(get_content_settings_queries_, result_ptr.move_as_error());
12651227
return;
12661228
}
12671229

12681230
auto result = result_ptr.move_as_ok();
12691231
do_set_ignore_sensitive_content_restrictions(result->sensitive_enabled_);
12701232
G()->shared_config().set_option_boolean("can_ignore_sensitive_content_restrictions", result->sensitive_can_change_);
12711233

1272-
for (auto &promise : promises) {
1273-
promise.set_value(Unit());
1274-
}
1234+
set_promises(get_content_settings_queries_);
12751235
return;
12761236
}
12771237
if (token == 1) {
@@ -1282,12 +1242,8 @@ void ConfigManager::on_result(NetQueryPtr res) {
12821242
CHECK(!promises.empty() || !unit_promises.empty());
12831243
auto result_ptr = fetch_result<telegram_api::help_getAppConfig>(std::move(res));
12841244
if (result_ptr.is_error()) {
1285-
for (auto &promise : promises) {
1286-
promise.set_error(result_ptr.error().clone());
1287-
}
1288-
for (auto &promise : unit_promises) {
1289-
promise.set_error(result_ptr.error().clone());
1290-
}
1245+
fail_promises(promises, result_ptr.error().clone());
1246+
fail_promises(unit_promises, result_ptr.move_as_error());
12911247
return;
12921248
}
12931249

@@ -1296,9 +1252,7 @@ void ConfigManager::on_result(NetQueryPtr res) {
12961252
for (auto &promise : promises) {
12971253
promise.set_value(convert_json_value_object(result));
12981254
}
1299-
for (auto &promise : unit_promises) {
1300-
promise.set_value(Unit());
1301-
}
1255+
set_promises(unit_promises);
13021256
return;
13031257
}
13041258

td/telegram/ContactsManager.cpp

Lines changed: 10 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -5507,11 +5507,7 @@ void ContactsManager::on_load_imported_contacts_finished() {
55075507
all_imported_contacts_.clear();
55085508
}
55095509
are_imported_contacts_loaded_ = true;
5510-
auto promises = std::move(load_imported_contacts_queries_);
5511-
load_imported_contacts_queries_.clear();
5512-
for (auto &promise : promises) {
5513-
promise.set_value(Unit());
5514-
}
5510+
set_promises(load_imported_contacts_queries_);
55155511
}
55165512

55175513
std::pair<vector<UserId>, vector<int32>> ContactsManager::change_imported_contacts(vector<Contact> &contacts,
@@ -7877,9 +7873,7 @@ void ContactsManager::finish_get_created_public_dialogs(PublicDialogType type, R
78777873
result = G()->close_status();
78787874
}
78797875
if (result.is_error()) {
7880-
for (auto &promise : promises) {
7881-
promise.set_error(result.error().clone());
7882-
}
7876+
fail_promises(promises, result.move_as_error());
78837877
return;
78847878
}
78857879

@@ -8084,17 +8078,13 @@ void ContactsManager::on_dismiss_suggested_action(SuggestedAction action, Result
80848078
dismiss_suggested_action_queries_.erase(it);
80858079

80868080
if (result.is_error()) {
8087-
for (auto &promise : promises) {
8088-
promise.set_error(result.error().clone());
8089-
}
8081+
fail_promises(promises, result.move_as_error());
80908082
return;
80918083
}
80928084

80938085
remove_dialog_suggested_action(action);
80948086

8095-
for (auto &promise : promises) {
8096-
promise.set_value(Unit());
8097-
}
8087+
set_promises(promises);
80988088
}
80998089

81008090
void ContactsManager::on_import_contacts_finished(int64 random_id, vector<UserId> imported_contact_user_ids,
@@ -8269,11 +8259,7 @@ void ContactsManager::save_contacts_to_database() {
82698259
void ContactsManager::on_get_contacts_failed(Status error) {
82708260
CHECK(error.is_error());
82718261
next_contacts_sync_date_ = G()->unix_time() + Random::fast(5, 10);
8272-
auto promises = std::move(load_contacts_queries_);
8273-
load_contacts_queries_.clear();
8274-
for (auto &promise : promises) {
8275-
promise.set_error(error.clone());
8276-
}
8262+
fail_promises(load_contacts_queries_, std::move(error));
82778263
}
82788264

82798265
void ContactsManager::on_load_contacts_from_database(string value) {
@@ -8309,11 +8295,7 @@ void ContactsManager::on_load_contacts_from_database(string value) {
83098295
void ContactsManager::on_get_contacts_finished(size_t expected_contact_count) {
83108296
LOG(INFO) << "Finished to get " << contacts_hints_.size() << " contacts out of expected " << expected_contact_count;
83118297
are_contacts_loaded_ = true;
8312-
auto promises = std::move(load_contacts_queries_);
8313-
load_contacts_queries_.clear();
8314-
for (auto &promise : promises) {
8315-
promise.set_value(Unit());
8316-
}
8298+
set_promises(load_contacts_queries_);
83178299
if (expected_contact_count != contacts_hints_.size()) {
83188300
save_contacts_to_database();
83198301
}
@@ -8813,9 +8795,7 @@ void ContactsManager::on_load_user_from_database(UserId user_id, string value, b
88138795
}
88148796
}
88158797

8816-
for (auto &promise : promises) {
8817-
promise.set_value(Unit());
8818-
}
8798+
set_promises(promises);
88198799
}
88208800

88218801
bool ContactsManager::have_user_force(UserId user_id) {
@@ -9118,9 +9098,7 @@ void ContactsManager::on_load_chat_from_database(ChatId chat_id, string value, b
91189098
LOG(ERROR) << "Can't find " << c->migrated_to_channel_id << " from " << chat_id;
91199099
}
91209100

9121-
for (auto &promise : promises) {
9122-
promise.set_value(Unit());
9123-
}
9101+
set_promises(promises);
91249102
}
91259103

91269104
bool ContactsManager::have_chat_force(ChatId chat_id) {
@@ -9376,9 +9354,7 @@ void ContactsManager::on_load_channel_from_database(ChannelId channel_id, string
93769354
}
93779355
}
93789356

9379-
for (auto &promise : promises) {
9380-
promise.set_value(Unit());
9381-
}
9357+
set_promises(promises);
93829358
}
93839359

93849360
bool ContactsManager::have_channel_force(ChannelId channel_id) {
@@ -9616,9 +9592,7 @@ void ContactsManager::on_load_secret_chat_from_database(SecretChatId secret_chat
96169592
LOG(ERROR) << "Can't find " << c->user_id << " from " << secret_chat_id;
96179593
}
96189594

9619-
for (auto &promise : promises) {
9620-
promise.set_value(Unit());
9621-
}
9595+
set_promises(promises);
96229596
}
96239597

96249598
bool ContactsManager::have_secret_chat_force(SecretChatId secret_chat_id) {

td/telegram/CountryInfoManager.cpp

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -362,15 +362,11 @@ void CountryInfoManager::on_get_country_list(const string &language_code,
362362
it->second->next_reload_time = max(Time::now() + Random::fast(60, 120), it->second->next_reload_time);
363363

364364
// if we have data for the language, then we don't need to fail promises
365-
for (auto &promise : promises) {
366-
promise.set_value(Unit());
367-
}
365+
set_promises(promises);
368366
return;
369367
}
370368
}
371-
for (auto &promise : promises) {
372-
promise.set_error(r_country_list.error().clone());
373-
}
369+
fail_promises(promises, r_country_list.move_as_error());
374370
return;
375371
}
376372

@@ -379,9 +375,7 @@ void CountryInfoManager::on_get_country_list(const string &language_code,
379375
on_get_country_list_impl(language_code, r_country_list.move_as_ok());
380376
}
381377

382-
for (auto &promise : promises) {
383-
promise.set_value(Unit());
384-
}
378+
set_promises(promises);
385379
}
386380

387381
void CountryInfoManager::on_get_country_list_impl(const string &language_code,

0 commit comments

Comments
 (0)