From 7c3822d932f96aeca2861b6ae0cb25eacb27136f Mon Sep 17 00:00:00 2001 From: levlam Date: Wed, 22 Mar 2023 18:18:35 +0300 Subject: [PATCH] Add and use ContactsManager::get_input_user_force. --- td/telegram/ContactsManager.cpp | 24 ++++++++++++++---------- td/telegram/ContactsManager.h | 2 ++ td/telegram/Game.cpp | 5 ++--- td/telegram/MessageEntity.cpp | 5 ++--- 4 files changed, 20 insertions(+), 16 deletions(-) diff --git a/td/telegram/ContactsManager.cpp b/td/telegram/ContactsManager.cpp index 98718f0c6..114b59d71 100644 --- a/td/telegram/ContactsManager.cpp +++ b/td/telegram/ContactsManager.cpp @@ -3996,11 +3996,7 @@ ContactsManager::ContactsManager(Td *td, ActorShared<> parent) : td_(td), parent get_user_queries_.set_merge_function([this](vector query_ids, Promise &&promise) { TRY_STATUS_PROMISE(promise, G()->close_status()); - auto input_users = transform(query_ids, [this](int64 query_id) { - auto r_input_user = get_input_user(UserId(query_id)); - CHECK(r_input_user.is_ok()); - return r_input_user.move_as_ok(); - }); + auto input_users = transform(query_ids, [this](int64 query_id) { return get_input_user_force(UserId(query_id)); }); td_->create_handler(std::move(promise))->send(std::move(input_users)); }); get_chat_queries_.set_merge_function([this](vector query_ids, Promise &&promise) { @@ -5325,6 +5321,15 @@ Result> ContactsManager::get_input_user(U return make_tl_object(user_id.get(), u->access_hash); } +telegram_api::object_ptr ContactsManager::get_input_user_force(UserId user_id) const { + auto r_input_user = get_input_user(user_id); + if (r_input_user.is_error()) { + CHECK(user_id.is_valid()); + return make_tl_object(user_id.get(), 0); + } + return r_input_user.move_as_ok(); +} + tl_object_ptr ContactsManager::get_input_channel(ChannelId channel_id) const { const Channel *c = get_channel(channel_id); if (c == nullptr) { @@ -16112,13 +16117,12 @@ void ContactsManager::load_user_full(UserId user_id, bool force, Promise & return send_get_user_full_query(user_id, std::move(input_user), std::move(promise), source); } if (user_full->is_expired()) { - auto r_input_user = get_input_user(user_id); - CHECK(r_input_user.is_ok()); + auto input_user = get_input_user_force(user_id); if (td_->auth_manager_->is_bot() && !force) { - return send_get_user_full_query(user_id, r_input_user.move_as_ok(), std::move(promise), "load expired user_full"); + return send_get_user_full_query(user_id, std::move(input_user), std::move(promise), "load expired user_full"); } - send_get_user_full_query(user_id, r_input_user.move_as_ok(), Auto(), "load expired user_full"); + send_get_user_full_query(user_id, std::move(input_user), Auto(), "load expired user_full"); } promise.set_value(Unit()); @@ -16224,7 +16228,7 @@ void ContactsManager::send_get_user_photos_query(UserId user_id, const UserPhoto }); td_->create_handler(std::move(query_promise)) - ->send(user_id, get_input_user(user_id).move_as_ok(), offset, max(limit, MAX_GET_PROFILE_PHOTOS / 5), 0); + ->send(user_id, get_input_user_force(user_id), offset, max(limit, MAX_GET_PROFILE_PHOTOS / 5), 0); } void ContactsManager::on_get_user_profile_photos(UserId user_id, Result &&result) { diff --git a/td/telegram/ContactsManager.h b/td/telegram/ContactsManager.h index 402da7693..8cae7df3d 100644 --- a/td/telegram/ContactsManager.h +++ b/td/telegram/ContactsManager.h @@ -90,6 +90,8 @@ class ContactsManager final : public Actor { Result> get_input_user(UserId user_id) const; + tl_object_ptr get_input_user_force(UserId user_id) const; + // TODO get_input_chat ??? tl_object_ptr get_input_channel(ChannelId channel_id) const; diff --git a/td/telegram/Game.cpp b/td/telegram/Game.cpp index 1014c274e..92ca27a49 100644 --- a/td/telegram/Game.cpp +++ b/td/telegram/Game.cpp @@ -90,10 +90,9 @@ bool Game::has_input_media() const { } tl_object_ptr Game::get_input_media_game(const Td *td) const { - auto r_input_user = td->contacts_manager_->get_input_user(bot_user_id_); - CHECK(r_input_user.is_ok()); + auto input_user = td->contacts_manager_->get_input_user_force(bot_user_id_); return make_tl_object( - make_tl_object(r_input_user.move_as_ok(), short_name_)); + make_tl_object(std::move(input_user), short_name_)); } bool operator==(const Game &lhs, const Game &rhs) { diff --git a/td/telegram/MessageEntity.cpp b/td/telegram/MessageEntity.cpp index a7723b2c4..e7eceb4e7 100644 --- a/td/telegram/MessageEntity.cpp +++ b/td/telegram/MessageEntity.cpp @@ -4460,10 +4460,9 @@ vector> get_input_message_entities(co make_tl_object(entity.offset, entity.length, entity.argument)); break; case MessageEntity::Type::MentionName: { - auto r_input_user = contacts_manager->get_input_user(entity.user_id); - LOG_CHECK(r_input_user.is_ok()) << source << ' ' << entity.user_id << ' ' << r_input_user.error(); + auto input_user = contacts_manager->get_input_user_force(entity.user_id); result.push_back(make_tl_object(entity.offset, entity.length, - r_input_user.move_as_ok())); + std::move(input_user))); break; } default: