diff --git a/td/telegram/ContactsManager.cpp b/td/telegram/ContactsManager.cpp index 5851024ca..eb94309d3 100644 --- a/td/telegram/ContactsManager.cpp +++ b/td/telegram/ContactsManager.cpp @@ -5071,6 +5071,49 @@ string ContactsManager::get_dialog_about(DialogId dialog_id) { return string(); } +string ContactsManager::get_dialog_search_text(DialogId dialog_id) const { + switch (dialog_id.get_type()) { + case DialogType::User: + return get_user_search_text(dialog_id.get_user_id()); + case DialogType::Chat: + return get_chat_title(dialog_id.get_chat_id()); + case DialogType::Channel: + return get_channel_search_text(dialog_id.get_channel_id()); + case DialogType::SecretChat: + return get_user_search_text(get_secret_chat_user_id(dialog_id.get_secret_chat_id())); + case DialogType::None: + default: + UNREACHABLE(); + } + return string(); +} + +string ContactsManager::get_user_search_text(UserId user_id) const { + auto u = get_user(user_id); + if (u == nullptr) { + return string(); + } + return get_user_search_text(u); +} + +string ContactsManager::get_user_search_text(const User *u) { + CHECK(u != nullptr); + return PSTRING() << u->first_name << ' ' << u->last_name << ' ' << u->username; +} + +string ContactsManager::get_channel_search_text(ChannelId channel_id) const { + auto c = get_channel(channel_id); + if (c == nullptr) { + return get_channel_title(channel_id); + } + return get_channel_search_text(c); +} + +string ContactsManager::get_channel_search_text(const Channel *c) { + CHECK(c != nullptr); + return PSTRING() << c->title << ' ' << c->username; +} + int32 ContactsManager::get_secret_chat_date(SecretChatId secret_chat_id) const { auto c = get_secret_chat(secret_chat_id); if (c == nullptr) { @@ -5099,14 +5142,6 @@ string ContactsManager::get_user_username(UserId user_id) const { return u->username; } -string ContactsManager::get_secret_chat_username(SecretChatId secret_chat_id) const { - auto c = get_secret_chat(secret_chat_id); - if (c == nullptr) { - return string(); - } - return get_user_username(c->user_id); -} - string ContactsManager::get_channel_username(ChannelId channel_id) const { auto c = get_channel(channel_id); if (c == nullptr) { @@ -14515,7 +14550,7 @@ void ContactsManager::update_contacts_hints(const User *u, UserId user_id, bool int64 key = user_id.get(); string old_value = contacts_hints_.key_to_string(key); - string new_value = is_contact ? (PSTRING() << u->first_name << ' ' << u->last_name << ' ' << u->username) : string(); + string new_value = is_contact ? get_user_search_text(u) : string(); if (new_value != old_value) { if (is_contact) { @@ -15616,7 +15651,7 @@ std::pair> ContactsManager::search_among_dialogs(const v if (query.empty()) { hints.add(dialog_id.get(), Slice(" ")); } else { - hints.add(dialog_id.get(), PSLICE() << u->first_name << ' ' << u->last_name << ' ' << u->username); + hints.add(dialog_id.get(), get_user_search_text(u)); } rating = -get_user_was_online(u, user_id); } else { @@ -15626,7 +15661,7 @@ std::pair> ContactsManager::search_among_dialogs(const v if (query.empty()) { hints.add(dialog_id.get(), Slice(" ")); } else { - hints.add(dialog_id.get(), td_->messages_manager_->get_dialog_title(dialog_id)); + hints.add(dialog_id.get(), get_dialog_search_text(dialog_id)); } } hints.set_rating(dialog_id.get(), rating); diff --git a/td/telegram/ContactsManager.h b/td/telegram/ContactsManager.h index b23eaf24c..83875a9be 100644 --- a/td/telegram/ContactsManager.h +++ b/td/telegram/ContactsManager.h @@ -127,11 +127,12 @@ class ContactsManager final : public Actor { string get_dialog_about(DialogId dialog_id); + string get_dialog_search_text(DialogId dialog_id) const; + void for_each_secret_chat_with_user(UserId user_id, const std::function &f); string get_user_username(UserId user_id) const; string get_channel_username(ChannelId channel_id) const; - string get_secret_chat_username(SecretChatId secret_chat_id) const; int32 get_secret_chat_date(SecretChatId secret_chat_id) const; int32 get_secret_chat_ttl(SecretChatId secret_chat_id) const; @@ -1237,6 +1238,9 @@ class ContactsManager final : public Actor { SecretChat *add_secret_chat(SecretChatId secret_chat_id); + string get_user_search_text(UserId user_id) const; + static string get_user_search_text(const User *u); + static DialogParticipantStatus get_chat_status(const Chat *c); DialogParticipantStatus get_chat_permissions(const Chat *c) const; @@ -1249,6 +1253,9 @@ class ContactsManager final : public Actor { static bool get_channel_join_to_send(const Channel *c); static bool get_channel_join_request(const Channel *c); + string get_channel_search_text(ChannelId channel_id) const; + static string get_channel_search_text(const Channel *c); + void set_my_id(UserId my_id); static bool is_valid_username(const string &username); diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp index 33704036d..871034ce3 100644 --- a/td/telegram/MessagesManager.cpp +++ b/td/telegram/MessagesManager.cpp @@ -33561,23 +33561,6 @@ string MessagesManager::get_dialog_title(DialogId dialog_id) const { } } -string MessagesManager::get_dialog_username(DialogId dialog_id) const { - switch (dialog_id.get_type()) { - case DialogType::User: - return td_->contacts_manager_->get_user_username(dialog_id.get_user_id()); - case DialogType::Chat: - return string(); - case DialogType::Channel: - return td_->contacts_manager_->get_channel_username(dialog_id.get_channel_id()); - case DialogType::SecretChat: - return td_->contacts_manager_->get_secret_chat_username(dialog_id.get_secret_chat_id()); - case DialogType::None: - default: - UNREACHABLE(); - return string(); - } -} - RestrictedRights MessagesManager::get_dialog_default_permissions(DialogId dialog_id) const { switch (dialog_id.get_type()) { case DialogType::User: @@ -37535,7 +37518,7 @@ bool MessagesManager::add_dialog_last_database_message(Dialog *d, unique_ptrauth_manager_->is_bot() && d->order != DEFAULT_ORDER) { - dialogs_hints_.add(-d->dialog_id.get(), get_dialog_title(d->dialog_id) + ' ' + get_dialog_username(d->dialog_id)); + dialogs_hints_.add(-d->dialog_id.get(), td_->contacts_manager_->get_dialog_search_text(d->dialog_id)); } } diff --git a/td/telegram/MessagesManager.h b/td/telegram/MessagesManager.h index 52788f743..7b18079b7 100644 --- a/td/telegram/MessagesManager.h +++ b/td/telegram/MessagesManager.h @@ -3073,8 +3073,6 @@ class MessagesManager final : public Actor { const DialogPhoto *get_dialog_photo(DialogId dialog_id) const; - string get_dialog_username(DialogId dialog_id) const; - RestrictedRights get_dialog_default_permissions(DialogId dialog_id) const; bool get_dialog_has_protected_content(DialogId dialog_id) const;