Fix retries in getBasicGroupFullInfo.
GitOrigin-RevId: acd566f171998c130f0e3a0544b11e6430148f07
This commit is contained in:
parent
10b1ac1c8a
commit
e8e546a721
@ -11664,7 +11664,7 @@ bool ContactsManager::is_chat_full_outdated(const ChatFull *chat_full, const Cha
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ContactsManager::get_chat_full(ChatId chat_id, Promise<Unit> &&promise) {
|
bool ContactsManager::get_chat_full(ChatId chat_id, bool force, Promise<Unit> &&promise) {
|
||||||
auto c = get_chat(chat_id);
|
auto c = get_chat(chat_id);
|
||||||
if (c == nullptr) {
|
if (c == nullptr) {
|
||||||
promise.set_error(Status::Error(6, "Group not found"));
|
promise.set_error(Status::Error(6, "Group not found"));
|
||||||
@ -11680,7 +11680,7 @@ bool ContactsManager::get_chat_full(ChatId chat_id, Promise<Unit> &&promise) {
|
|||||||
|
|
||||||
if (is_chat_full_outdated(chat_full, c, chat_id)) {
|
if (is_chat_full_outdated(chat_full, c, chat_id)) {
|
||||||
LOG(INFO) << "Have outdated full " << chat_id;
|
LOG(INFO) << "Have outdated full " << chat_id;
|
||||||
if (td_->auth_manager_->is_bot()) {
|
if (td_->auth_manager_->is_bot() && !force) {
|
||||||
send_get_chat_full_query(chat_id, std::move(promise), "get expired chat_full");
|
send_get_chat_full_query(chat_id, std::move(promise), "get expired chat_full");
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
@ -12149,7 +12149,7 @@ DialogParticipant ContactsManager::get_chat_participant(ChatId chat_id, UserId u
|
|||||||
LOG(INFO) << "Trying to get " << user_id << " as member of " << chat_id;
|
LOG(INFO) << "Trying to get " << user_id << " as member of " << chat_id;
|
||||||
if (force) {
|
if (force) {
|
||||||
promise.set_value(Unit());
|
promise.set_value(Unit());
|
||||||
} else if (!get_chat_full(chat_id, std::move(promise))) {
|
} else if (!get_chat_full(chat_id, force, std::move(promise))) {
|
||||||
return DialogParticipant();
|
return DialogParticipant();
|
||||||
}
|
}
|
||||||
// promise is already set
|
// promise is already set
|
||||||
@ -12174,7 +12174,7 @@ std::pair<int32, vector<DialogParticipant>> ContactsManager::search_chat_partici
|
|||||||
|
|
||||||
if (force) {
|
if (force) {
|
||||||
promise.set_value(Unit());
|
promise.set_value(Unit());
|
||||||
} else if (!get_chat_full(chat_id, std::move(promise))) {
|
} else if (!get_chat_full(chat_id, force, std::move(promise))) {
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
// promise is already set
|
// promise is already set
|
||||||
@ -12492,7 +12492,7 @@ void ContactsManager::on_update_dialog_administrators(DialogId dialog_id, vector
|
|||||||
void ContactsManager::reload_dialog_administrators(DialogId dialog_id, int32 hash, Promise<Unit> &&promise) {
|
void ContactsManager::reload_dialog_administrators(DialogId dialog_id, int32 hash, Promise<Unit> &&promise) {
|
||||||
switch (dialog_id.get_type()) {
|
switch (dialog_id.get_type()) {
|
||||||
case DialogType::Chat:
|
case DialogType::Chat:
|
||||||
get_chat_full(dialog_id.get_chat_id(), std::move(promise));
|
get_chat_full(dialog_id.get_chat_id(), false, std::move(promise));
|
||||||
break;
|
break;
|
||||||
case DialogType::Channel:
|
case DialogType::Channel:
|
||||||
td_->create_handler<GetChannelAdministratorsQuery>(std::move(promise))->send(dialog_id.get_channel_id(), hash);
|
td_->create_handler<GetChannelAdministratorsQuery>(std::move(promise))->send(dialog_id.get_channel_id(), hash);
|
||||||
|
@ -434,7 +434,7 @@ class ContactsManager : public Actor {
|
|||||||
bool have_chat_force(ChatId chat_id);
|
bool have_chat_force(ChatId chat_id);
|
||||||
bool get_chat(ChatId chat_id, int left_tries, Promise<Unit> &&promise);
|
bool get_chat(ChatId chat_id, int left_tries, Promise<Unit> &&promise);
|
||||||
void reload_chat(ChatId chat_id, Promise<Unit> &&promise);
|
void reload_chat(ChatId chat_id, Promise<Unit> &&promise);
|
||||||
bool get_chat_full(ChatId chat_id, Promise<Unit> &&promise);
|
bool get_chat_full(ChatId chat_id, bool force, Promise<Unit> &&promise);
|
||||||
|
|
||||||
bool get_chat_is_active(ChatId chat_id) const;
|
bool get_chat_is_active(ChatId chat_id) const;
|
||||||
DialogParticipantStatus get_chat_status(ChatId chat_id) const;
|
DialogParticipantStatus get_chat_status(ChatId chat_id) const;
|
||||||
|
@ -13769,7 +13769,7 @@ void MessagesManager::get_dialog_info_full(DialogId dialog_id, Promise<Unit> &&p
|
|||||||
td_->contacts_manager_->get_user_full(dialog_id.get_user_id(), std::move(promise));
|
td_->contacts_manager_->get_user_full(dialog_id.get_user_id(), std::move(promise));
|
||||||
return;
|
return;
|
||||||
case DialogType::Chat:
|
case DialogType::Chat:
|
||||||
td_->contacts_manager_->get_chat_full(dialog_id.get_chat_id(), std::move(promise));
|
td_->contacts_manager_->get_chat_full(dialog_id.get_chat_id(), true, std::move(promise));
|
||||||
return;
|
return;
|
||||||
case DialogType::Channel:
|
case DialogType::Channel:
|
||||||
td_->contacts_manager_->get_channel_full(dialog_id.get_channel_id(), std::move(promise));
|
td_->contacts_manager_->get_channel_full(dialog_id.get_channel_id(), std::move(promise));
|
||||||
|
@ -711,7 +711,7 @@ class GetGroupFullInfoRequest : public RequestActor<> {
|
|||||||
ChatId chat_id_;
|
ChatId chat_id_;
|
||||||
|
|
||||||
void do_run(Promise<Unit> &&promise) override {
|
void do_run(Promise<Unit> &&promise) override {
|
||||||
td->contacts_manager_->get_chat_full(chat_id_, std::move(promise));
|
td->contacts_manager_->get_chat_full(chat_id_, get_tries() < 2, std::move(promise));
|
||||||
}
|
}
|
||||||
|
|
||||||
void do_send_result() override {
|
void do_send_result() override {
|
||||||
|
Reference in New Issue
Block a user