Use resolve_dialog_username internally.

This commit is contained in:
levlam 2024-01-08 00:31:07 +03:00
parent a2c6f4aa7c
commit 64c646b9de

View File

@ -1737,18 +1737,11 @@ DialogId DialogManager::search_public_dialog(const string &username_to_search, b
return DialogId(); return DialogId();
} }
DialogId dialog_id; auto dialog_id = resolve_dialog_username(username, promise);
auto resolved_username = resolved_usernames_.get(username); if (!dialog_id.is_valid()) {
if (resolved_username.dialog_id.is_valid()) { return DialogId();
if (resolved_username.expires_at < Time::now()) {
send_resolve_dialog_username_query(username, Promise<Unit>());
}
dialog_id = resolved_username.dialog_id;
} else {
dialog_id = inaccessible_resolved_usernames_.get(username);
} }
if (dialog_id.is_valid()) {
if (have_input_peer(dialog_id, AccessRights::Read)) { if (have_input_peer(dialog_id, AccessRights::Read)) {
if (!force && reload_voice_chat_on_search_usernames_.count(username)) { if (!force && reload_voice_chat_on_search_usernames_.count(username)) {
reload_voice_chat_on_search_usernames_.erase(username); reload_voice_chat_on_search_usernames_.erase(username);
@ -1759,17 +1752,15 @@ DialogId DialogManager::search_public_dialog(const string &username_to_search, b
} }
} }
td_->messages_manager_->create_dialog(dialog_id, false, std::move(promise)); td_->messages_manager_->create_dialog(dialog_id, force, std::move(promise));
return dialog_id; return dialog_id;
} else { }
// bot username may be known despite there is no access_hash
if (force || dialog_id.get_type() != DialogType::User) { if (force || dialog_id.get_type() != DialogType::User) { // bot username may be known despite there is no access_hash
force_create_dialog(dialog_id, "search_public_dialog", true); force_create_dialog(dialog_id, "search_public_dialog", true);
promise.set_value(Unit()); promise.set_value(Unit());
return dialog_id; return dialog_id;
} }
}
}
send_resolve_dialog_username_query(username, std::move(promise)); send_resolve_dialog_username_query(username, std::move(promise));
return DialogId(); return DialogId();