Move get_user_link to AccountManager.

This commit is contained in:
levlam 2023-09-11 18:59:19 +03:00
parent 5f1b1f41fc
commit be442ba977
5 changed files with 23 additions and 29 deletions

View File

@ -9,6 +9,7 @@
#include "td/telegram/ContactsManager.h"
#include "td/telegram/DeviceTokenManager.h"
#include "td/telegram/Global.h"
#include "td/telegram/LinkManager.h"
#include "td/telegram/net/NetQueryCreator.h"
#include "td/telegram/Td.h"
#include "td/telegram/telegram_api.h"
@ -676,7 +677,24 @@ void AccountManager::disconnect_all_websites(Promise<Unit> &&promise) {
td_->create_handler<ResetWebAuthorizationsQuery>(std::move(promise))->send();
}
void AccountManager::export_contact_token(Promise<td_api::object_ptr<td_api::userLink>> &&promise) {
void AccountManager::get_user_link(Promise<td_api::object_ptr<td_api::userLink>> &&promise) {
td_->contacts_manager_->get_me(
PromiseCreator::lambda([actor_id = actor_id(this), promise = std::move(promise)](Result<Unit> &&result) mutable {
if (result.is_error()) {
promise.set_error(result.move_as_error());
} else {
send_closure(actor_id, &AccountManager::get_user_link_impl, std::move(promise));
}
}));
}
void AccountManager::get_user_link_impl(Promise<td_api::object_ptr<td_api::userLink>> &&promise) {
TRY_STATUS_PROMISE(promise, G()->close_status());
auto username = td_->contacts_manager_->get_user_first_username(td_->contacts_manager_->get_my_id());
if (!username.empty()) {
return promise.set_value(
td_api::make_object<td_api::userLink>(LinkManager::get_public_dialog_link(username, true), 0));
}
td_->create_handler<ExportContactTokenQuery>(std::move(promise))->send();
}

View File

@ -49,7 +49,7 @@ class AccountManager final : public Actor {
void disconnect_all_websites(Promise<Unit> &&promise);
void export_contact_token(Promise<td_api::object_ptr<td_api::userLink>> &&promise);
void get_user_link(Promise<td_api::object_ptr<td_api::userLink>> &&promise);
void import_contact_token(const string &token, Promise<td_api::object_ptr<td_api::user>> &&promise);
@ -60,6 +60,8 @@ class AccountManager final : public Actor {
private:
void tear_down() final;
void get_user_link_impl(Promise<td_api::object_ptr<td_api::userLink>> &&promise);
Td *td_;
ActorShared<> parent_;
};

View File

@ -6,7 +6,6 @@
//
#include "td/telegram/ContactsManager.h"
#include "td/telegram/AccountManager.h"
#include "td/telegram/AnimationsManager.h"
#include "td/telegram/AuthManager.h"
#include "td/telegram/BlockListId.h"
@ -16838,27 +16837,6 @@ void ContactsManager::reload_dialog_info(DialogId dialog_id, Promise<Unit> &&pro
}
}
void ContactsManager::get_user_link(Promise<td_api::object_ptr<td_api::userLink>> &&promise) {
get_me(
PromiseCreator::lambda([actor_id = actor_id(this), promise = std::move(promise)](Result<Unit> &&result) mutable {
if (result.is_error()) {
promise.set_error(result.move_as_error());
} else {
send_closure(actor_id, &ContactsManager::get_user_link_impl, std::move(promise));
}
}));
}
void ContactsManager::get_user_link_impl(Promise<td_api::object_ptr<td_api::userLink>> &&promise) {
TRY_STATUS_PROMISE(promise, G()->close_status());
const auto *u = get_user(get_my_id());
if (u != nullptr && u->usernames.has_first_username()) {
return promise.set_value(td_api::make_object<td_api::userLink>(
LinkManager::get_public_dialog_link(u->usernames.get_first_username(), true), 0));
}
td_->account_manager_->export_contact_token(std::move(promise));
}
void ContactsManager::send_get_me_query(Td *td, Promise<Unit> &&promise) {
vector<tl_object_ptr<telegram_api::InputUser>> users;
users.push_back(make_tl_object<telegram_api::inputUserSelf>());

View File

@ -583,8 +583,6 @@ class ContactsManager final : public Actor {
void reload_dialog_info(DialogId dialog_id, Promise<Unit> &&promise);
void get_user_link(Promise<td_api::object_ptr<td_api::userLink>> &&promise);
static void send_get_me_query(Td *td, Promise<Unit> &&promise);
UserId get_me(Promise<Unit> &&promise);
bool get_user(UserId user_id, int left_tries, Promise<Unit> &&promise);
@ -1405,8 +1403,6 @@ class ContactsManager final : public Actor {
string get_channel_search_text(ChannelId channel_id) const;
static string get_channel_search_text(const Channel *c);
void get_user_link_impl(Promise<td_api::object_ptr<td_api::userLink>> &&promise);
void set_my_id(UserId my_id);
static bool is_allowed_username(const string &username);

View File

@ -4625,7 +4625,7 @@ void Td::on_request(uint64 id, td_api::resendChangePhoneNumberCode &request) {
void Td::on_request(uint64 id, const td_api::getUserLink &request) {
CHECK_IS_USER();
CREATE_REQUEST_PROMISE();
contacts_manager_->get_user_link(std::move(promise));
account_manager_->get_user_link(std::move(promise));
}
void Td::on_request(uint64 id, td_api::searchUserByToken &request) {