Add optional source to have_dialog_force.

This commit is contained in:
levlam 2021-04-08 00:51:32 +03:00
parent 0a0c9a6f96
commit a0dcd2d9c2
9 changed files with 49 additions and 49 deletions

View File

@ -241,7 +241,7 @@ int64 CallbackQueriesManager::send_callback_query(FullMessageId full_message_id,
}
auto dialog_id = full_message_id.get_dialog_id();
td_->messages_manager_->have_dialog_force(dialog_id);
td_->messages_manager_->have_dialog_force(dialog_id, "send_callback_query");
if (!td_->messages_manager_->have_input_peer(dialog_id, AccessRights::Read)) {
promise.set_error(Status::Error(5, "Can't access the chat"));
return 0;

View File

@ -6360,7 +6360,7 @@ void ContactsManager::set_channel_discussion_group(DialogId dialog_id, DialogId
ChannelId broadcast_channel_id;
telegram_api::object_ptr<telegram_api::InputChannel> broadcast_input_channel;
if (dialog_id.is_valid()) {
if (!td_->messages_manager_->have_dialog_force(dialog_id)) {
if (!td_->messages_manager_->have_dialog_force(dialog_id, "set_channel_discussion_group 1")) {
return promise.set_error(Status::Error(400, "Chat not found"));
}
@ -6390,7 +6390,7 @@ void ContactsManager::set_channel_discussion_group(DialogId dialog_id, DialogId
ChannelId group_channel_id;
telegram_api::object_ptr<telegram_api::InputChannel> group_input_channel;
if (discussion_dialog_id.is_valid()) {
if (!td_->messages_manager_->have_dialog_force(discussion_dialog_id)) {
if (!td_->messages_manager_->have_dialog_force(discussion_dialog_id, "set_channel_discussion_group 2")) {
return promise.set_error(Status::Error(400, "Discussion chat not found"));
}
if (discussion_dialog_id.get_type() != DialogType::Channel) {
@ -6430,7 +6430,7 @@ void ContactsManager::set_channel_location(DialogId dialog_id, const DialogLocat
if (!dialog_id.is_valid()) {
return promise.set_error(Status::Error(400, "Invalid chat identifier specified"));
}
if (!td_->messages_manager_->have_dialog_force(dialog_id)) {
if (!td_->messages_manager_->have_dialog_force(dialog_id, "set_channel_location")) {
return promise.set_error(Status::Error(400, "Chat not found"));
}
@ -6462,7 +6462,7 @@ void ContactsManager::set_channel_slow_mode_delay(DialogId dialog_id, int32 slow
if (!dialog_id.is_valid()) {
return promise.set_error(Status::Error(400, "Invalid chat identifier specified"));
}
if (!td_->messages_manager_->have_dialog_force(dialog_id)) {
if (!td_->messages_manager_->have_dialog_force(dialog_id, "set_channel_slow_mode_delay")) {
return promise.set_error(Status::Error(400, "Chat not found"));
}
@ -6490,7 +6490,7 @@ void ContactsManager::get_channel_statistics_dc_id(DialogId dialog_id, bool for_
if (!dialog_id.is_valid()) {
return promise.set_error(Status::Error(400, "Invalid chat identifier specified"));
}
if (!td_->messages_manager_->have_dialog_force(dialog_id)) {
if (!td_->messages_manager_->have_dialog_force(dialog_id, "get_channel_statistics_dc_id")) {
return promise.set_error(Status::Error(400, "Chat not found"));
}
@ -6711,7 +6711,7 @@ void ContactsManager::delete_channel(ChannelId channel_id, Promise<Unit> &&promi
}
void ContactsManager::delete_dialog(DialogId dialog_id, Promise<Unit> &&promise) {
if (!td_->messages_manager_->have_dialog_force(dialog_id)) {
if (!td_->messages_manager_->have_dialog_force(dialog_id, "delete_dialog")) {
return promise.set_error(Status::Error(3, "Chat not found"));
}
@ -7069,7 +7069,7 @@ td_api::object_ptr<td_api::CanTransferOwnershipResult> ContactsManager::get_can_
void ContactsManager::transfer_dialog_ownership(DialogId dialog_id, UserId user_id, const string &password,
Promise<Unit> &&promise) {
if (!td_->messages_manager_->have_dialog_force(dialog_id)) {
if (!td_->messages_manager_->have_dialog_force(dialog_id, "transfer_dialog_ownership")) {
return promise.set_error(Status::Error(3, "Chat not found"));
}
if (!have_user_force(user_id)) {
@ -7121,7 +7121,7 @@ void ContactsManager::transfer_channel_ownership(
}
Status ContactsManager::can_manage_dialog_invite_links(DialogId dialog_id, bool creator_only) {
if (!td_->messages_manager_->have_dialog_force(dialog_id)) {
if (!td_->messages_manager_->have_dialog_force(dialog_id, "can_manage_dialog_invite_links")) {
return Status::Error(3, "Chat not found");
}
@ -14362,7 +14362,7 @@ std::pair<int32, vector<UserId>> ContactsManager::search_among_users(const vecto
void ContactsManager::add_dialog_participant(DialogId dialog_id, UserId user_id, int32 forward_limit,
Promise<Unit> &&promise) {
if (!td_->messages_manager_->have_dialog_force(dialog_id)) {
if (!td_->messages_manager_->have_dialog_force(dialog_id, "add_dialog_participant")) {
return promise.set_error(Status::Error(3, "Chat not found"));
}
@ -14387,7 +14387,7 @@ void ContactsManager::add_dialog_participants(DialogId dialog_id, const vector<U
return promise.set_error(Status::Error(3, "Method is not available for bots"));
}
if (!td_->messages_manager_->have_dialog_force(dialog_id)) {
if (!td_->messages_manager_->have_dialog_force(dialog_id, "add_dialog_participants")) {
return promise.set_error(Status::Error(3, "Chat not found"));
}
@ -14410,7 +14410,7 @@ void ContactsManager::set_dialog_participant_status(DialogId dialog_id, UserId u
const tl_object_ptr<td_api::ChatMemberStatus> &chat_member_status,
Promise<Unit> &&promise) {
auto status = get_dialog_participant_status(chat_member_status);
if (!td_->messages_manager_->have_dialog_force(dialog_id)) {
if (!td_->messages_manager_->have_dialog_force(dialog_id, "set_dialog_participant_status")) {
return promise.set_error(Status::Error(3, "Chat not found"));
}
@ -14431,7 +14431,7 @@ void ContactsManager::set_dialog_participant_status(DialogId dialog_id, UserId u
void ContactsManager::ban_dialog_participant(DialogId dialog_id, UserId user_id, int32 banned_until_date,
bool revoke_messages, Promise<Unit> &&promise) {
if (!td_->messages_manager_->have_dialog_force(dialog_id)) {
if (!td_->messages_manager_->have_dialog_force(dialog_id, "ban_dialog_participant")) {
return promise.set_error(Status::Error(3, "Chat not found"));
}
@ -14455,7 +14455,7 @@ DialogParticipant ContactsManager::get_dialog_participant(DialogId dialog_id, Us
bool force, Promise<Unit> &&promise) {
LOG(INFO) << "Receive GetChatMember request to get " << user_id << " in " << dialog_id << " with random_id "
<< random_id;
if (!td_->messages_manager_->have_dialog_force(dialog_id)) {
if (!td_->messages_manager_->have_dialog_force(dialog_id, "get_dialog_participant")) {
promise.set_error(Status::Error(3, "Chat not found"));
return DialogParticipant();
}
@ -14549,7 +14549,7 @@ void ContactsManager::search_dialog_participants(DialogId dialog_id, const strin
Promise<DialogParticipants> &&promise) {
LOG(INFO) << "Receive searchChatMembers request to search for \"" << query << "\" in " << dialog_id << " with filter "
<< filter;
if (!td_->messages_manager_->have_dialog_force(dialog_id)) {
if (!td_->messages_manager_->have_dialog_force(dialog_id, "search_dialog_participants")) {
return promise.set_error(Status::Error(3, "Chat not found"));
}
if (limit < 0) {
@ -14839,7 +14839,7 @@ void ContactsManager::do_get_channel_participants(ChannelId channel_id, ChannelP
vector<DialogAdministrator> ContactsManager::get_dialog_administrators(DialogId dialog_id, int left_tries,
Promise<Unit> &&promise) {
LOG(INFO) << "Receive GetChatAdministrators request in " << dialog_id << " with " << left_tries << " left tries";
if (!td_->messages_manager_->have_dialog_force(dialog_id)) {
if (!td_->messages_manager_->have_dialog_force(dialog_id, "get_dialog_administrators")) {
promise.set_error(Status::Error(3, "Chat not found"));
return {};
}

View File

@ -78,7 +78,7 @@ bool resolve_dependencies_force(Td *td, const Dependencies &dependencies, const
}
}
for (auto dialog_id : dependencies.dialog_ids) {
if (dialog_id.is_valid() && !td->messages_manager_->have_dialog_force(dialog_id)) {
if (dialog_id.is_valid() && !td->messages_manager_->have_dialog_force(dialog_id, source)) {
LOG(ERROR) << "Can't find " << dialog_id << " from " << source;
td->messages_manager_->force_create_dialog(dialog_id, "resolve_dependencies_force", true);
success = false;

View File

@ -890,7 +890,7 @@ DialogId GroupCallManager::get_group_call_participant_id(
}
case td_api::messageSenderChat::ID: {
DialogId dialog_id(static_cast<const td_api::messageSenderChat *>(message_sender.get())->chat_id_);
if (td_->messages_manager_->have_dialog_force(dialog_id)) {
if (td_->messages_manager_->have_dialog_force(dialog_id, "get_group_call_participant_id")) {
return dialog_id;
}
break;
@ -1019,7 +1019,7 @@ void GroupCallManager::get_group_call_join_as(DialogId dialog_id,
if (!dialog_id.is_valid()) {
return promise.set_error(Status::Error(400, "Invalid chat identifier specified"));
}
if (!td_->messages_manager_->have_dialog_force(dialog_id)) {
if (!td_->messages_manager_->have_dialog_force(dialog_id, "get_group_call_join_as")) {
return promise.set_error(Status::Error(400, "Chat not found"));
}
if (!td_->messages_manager_->have_input_peer(dialog_id, AccessRights::Read)) {
@ -1033,7 +1033,7 @@ void GroupCallManager::create_voice_chat(DialogId dialog_id, Promise<GroupCallId
if (!dialog_id.is_valid()) {
return promise.set_error(Status::Error(400, "Invalid chat identifier specified"));
}
if (!td_->messages_manager_->have_dialog_force(dialog_id)) {
if (!td_->messages_manager_->have_dialog_force(dialog_id, "create_voice_chat")) {
return promise.set_error(Status::Error(400, "Chat not found"));
}
if (!td_->messages_manager_->have_input_peer(dialog_id, AccessRights::Read)) {
@ -2087,7 +2087,7 @@ void GroupCallManager::join_group_call(GroupCallId group_call_id, DialogId as_di
have_as_dialog_id = false;
}
} else {
if (!td_->messages_manager_->have_dialog_force(as_dialog_id)) {
if (!td_->messages_manager_->have_dialog_force(as_dialog_id, "join_group_call")) {
return promise.set_error(Status::Error(400, "Alias chat not found"));
}
}

View File

@ -12883,7 +12883,7 @@ void MessagesManager::delete_secret_messages(SecretChatId secret_chat_id, std::v
CHECK(secret_chat_id.is_valid());
DialogId dialog_id(secret_chat_id);
if (!have_dialog_force(dialog_id)) {
if (!have_dialog_force(dialog_id, "delete_secret_messages")) {
LOG(ERROR) << "Ignore delete secret messages in unknown " << dialog_id;
promise.set_value(Unit());
return;
@ -12930,7 +12930,7 @@ void MessagesManager::delete_secret_chat_history(SecretChatId secret_chat_id, bo
CHECK(!last_message_id.is_scheduled());
DialogId dialog_id(secret_chat_id);
if (!have_dialog_force(dialog_id)) {
if (!have_dialog_force(dialog_id, "delete_secret_chat_history")) {
LOG(ERROR) << "Ignore delete history in unknown " << dialog_id;
promise.set_value(Unit());
return;
@ -15385,7 +15385,7 @@ bool MessagesManager::load_dialog(DialogId dialog_id, int left_tries, Promise<Un
return false;
}
if (!have_dialog_force(dialog_id)) { // TODO remove _force
if (!have_dialog_force(dialog_id, "load_dialog")) { // TODO remove _force
if (G()->parameters().use_message_db) {
// TODO load dialog from database, DialogLoader
// send_closure_later(actor_id(this), &MessagesManager::load_dialog_from_database, dialog_id,
@ -15470,7 +15470,7 @@ void MessagesManager::load_dialog_filter(const DialogFilter *filter, bool force,
for (auto &input_dialog_id : needed_dialog_ids) {
auto dialog_id = input_dialog_id.get_dialog_id();
// TODO load dialogs asynchronously
if (!have_dialog_force(dialog_id)) {
if (!have_dialog_force(dialog_id, "load_dialog_filter")) {
if (dialog_id.get_type() == DialogType::SecretChat) {
if (have_dialog_info_force(dialog_id)) {
force_create_dialog(dialog_id, "load_dialog_filter");
@ -15624,7 +15624,7 @@ std::pair<int32, vector<DialogId>> MessagesManager::get_dialogs(DialogListId dia
vector<InputDialogId> input_dialog_ids;
for (auto &input_dialog_id : filter->pinned_dialog_ids) {
auto dialog_id = input_dialog_id.get_dialog_id();
if (!have_dialog_force(dialog_id)) {
if (!have_dialog_force(dialog_id, "get_dialogs")) {
if (dialog_id.get_type() == DialogType::SecretChat) {
if (have_dialog_info_force(dialog_id)) {
force_create_dialog(dialog_id, "get_dialogs");
@ -17286,7 +17286,7 @@ void MessagesManager::get_messages_from_server(vector<FullMessageId> &&message_i
for (auto &it : scheduled_message_ids) {
auto dialog_id = it.first;
have_dialog_force(dialog_id);
have_dialog_force(dialog_id, "get_messages_from_server");
auto input_peer = get_input_peer(dialog_id, AccessRights::Read);
if (input_peer == nullptr) {
LOG(ERROR) << "Can't find info about " << dialog_id << " to get a message from it";
@ -19019,7 +19019,7 @@ Status MessagesManager::toggle_message_sender_is_blocked(const td_api::object_pt
break;
case td_api::messageSenderChat::ID: {
auto sender_dialog_id = DialogId(static_cast<const td_api::messageSenderChat *>(sender.get())->chat_id_);
if (!have_dialog_force(sender_dialog_id)) {
if (!have_dialog_force(sender_dialog_id, "toggle_message_sender_is_blocked")) {
return Status::Error(400, "Sender chat not found");
}
@ -21721,7 +21721,7 @@ MessagesManager::FoundMessages MessagesManager::offline_search_messages(DialogId
promise.set_value(Unit());
return {};
}
if (dialog_id != DialogId() && !have_dialog_force(dialog_id)) {
if (dialog_id != DialogId() && !have_dialog_force(dialog_id, "offline_search_messages")) {
promise.set_error(Status::Error(400, "Chat not found"));
return {};
}
@ -26685,7 +26685,7 @@ Result<MessageId> MessagesManager::add_local_message(
if (sender_dialog_id.get_type() != DialogType::Channel) {
return Status::Error(400, "Sender chat must be a supergroup or channel");
}
if (!have_dialog_force(sender_dialog_id)) {
if (!have_dialog_force(sender_dialog_id, "add_local_message")) {
return Status::Error(400, "Sender chat not found");
}
break;
@ -26796,7 +26796,7 @@ void MessagesManager::get_message_file_type(const string &message_file_head,
}
Status MessagesManager::can_import_messages(DialogId dialog_id) {
if (!have_dialog_force(dialog_id)) {
if (!have_dialog_force(dialog_id, "can_import_messages")) {
return Status::Error(400, "Chat not found");
}
@ -27118,7 +27118,7 @@ Result<MessagesManager::MessagePushNotificationInfo> MessagesManager::get_messag
if (d == nullptr) {
return Status::Error(406, "Ignore notification in unknown chat");
}
if (sender_dialog_id.is_valid() && !have_dialog_force(sender_dialog_id)) {
if (sender_dialog_id.is_valid() && !have_dialog_force(sender_dialog_id, "get_message_push_notification_info")) {
return Status::Error(406, "Ignore notification sent by unknown chat");
}
@ -30518,7 +30518,7 @@ bool MessagesManager::is_dialog_action_unneeded(DialogId dialog_id) const {
void MessagesManager::send_dialog_action(DialogId dialog_id, MessageId top_thread_message_id, DialogAction action,
Promise<Unit> &&promise) {
if (!have_dialog_force(dialog_id)) {
if (!have_dialog_force(dialog_id, "send_dialog_action")) {
return promise.set_error(Status::Error(5, "Chat not found"));
}
if (top_thread_message_id != MessageId() &&
@ -30825,7 +30825,7 @@ void MessagesManager::set_dialog_photo(DialogId dialog_id, const tl_object_ptr<t
Promise<Unit> &&promise) {
LOG(INFO) << "Receive setChatPhoto request to change photo of " << dialog_id;
if (!have_dialog_force(dialog_id)) {
if (!have_dialog_force(dialog_id, "set_dialog_photo")) {
return promise.set_error(Status::Error(3, "Chat not found"));
}
@ -30940,7 +30940,7 @@ void MessagesManager::upload_dialog_photo(DialogId dialog_id, FileId file_id, bo
void MessagesManager::set_dialog_title(DialogId dialog_id, const string &title, Promise<Unit> &&promise) {
LOG(INFO) << "Receive setChatTitle request to change title of " << dialog_id << " to \"" << title << '"';
if (!have_dialog_force(dialog_id)) {
if (!have_dialog_force(dialog_id, "set_dialog_title")) {
return promise.set_error(Status::Error(3, "Chat not found"));
}
@ -31056,7 +31056,7 @@ void MessagesManager::set_dialog_permissions(DialogId dialog_id,
LOG(INFO) << "Receive setChatPermissions request to change permissions of " << dialog_id << " to "
<< to_string(permissions);
if (!have_dialog_force(dialog_id)) {
if (!have_dialog_force(dialog_id, "set_dialog_permissions")) {
return promise.set_error(Status::Error(3, "Chat not found"));
}
if (!have_input_peer(dialog_id, AccessRights::Write)) {
@ -31110,7 +31110,7 @@ void MessagesManager::set_dialog_description(DialogId dialog_id, const string &d
LOG(INFO) << "Receive setChatDescription request to set description of " << dialog_id << " to \"" << description
<< '"';
if (!have_dialog_force(dialog_id)) {
if (!have_dialog_force(dialog_id, "set_dialog_description")) {
return promise.set_error(Status::Error(3, "Chat not found"));
}
@ -31319,7 +31319,7 @@ int64 MessagesManager::get_dialog_event_log(DialogId dialog_id, const string &qu
return 0;
}
if (!have_dialog_force(dialog_id)) {
if (!have_dialog_force(dialog_id, "get_dialog_event_log")) {
promise.set_error(Status::Error(3, "Chat not found"));
return 0;
}
@ -34958,8 +34958,8 @@ const MessagesManager::Dialog *MessagesManager::get_dialog(DialogId dialog_id) c
return it == dialogs_.end() ? nullptr : it->second.get();
}
bool MessagesManager::have_dialog_force(DialogId dialog_id) {
return loaded_dialogs_.count(dialog_id) > 0 || get_dialog_force(dialog_id, "have_dialog_force") != nullptr;
bool MessagesManager::have_dialog_force(DialogId dialog_id, const char *source) {
return loaded_dialogs_.count(dialog_id) > 0 || get_dialog_force(dialog_id, source) != nullptr;
}
MessagesManager::Dialog *MessagesManager::get_dialog_force(DialogId dialog_id, const char *source) {
@ -36777,7 +36777,7 @@ void MessagesManager::on_binlog_events(vector<BinlogEvent> &&events) {
auto dialog_id = log_event.dialog_id_;
bool have_info = dialog_id.get_type() == DialogType::User
? td_->contacts_manager_->have_user_force(dialog_id.get_user_id())
: have_dialog_force(dialog_id);
: have_dialog_force(dialog_id, "ToggleDialogIsMarkedAsUnreadOnServerLogEvent");
if (!have_info || !have_input_peer(dialog_id, AccessRights::Know)) {
binlog_erase(G()->td_db()->get_binlog(), event.id_);
break;
@ -37065,7 +37065,7 @@ bool MessagesManager::load_recently_found_dialogs(Promise<Unit> &promise) {
}
Status MessagesManager::add_recently_found_dialog(DialogId dialog_id) {
if (!have_dialog_force(dialog_id)) {
if (!have_dialog_force(dialog_id, "add_recently_found_dialog")) {
return Status::Error(5, "Chat not found");
}
if (add_recently_found_dialog_internal(dialog_id)) {
@ -37076,7 +37076,7 @@ Status MessagesManager::add_recently_found_dialog(DialogId dialog_id) {
}
Status MessagesManager::remove_recently_found_dialog(DialogId dialog_id) {
if (!have_dialog_force(dialog_id)) {
if (!have_dialog_force(dialog_id, "remove_recently_found_dialog")) {
return Status::Error(5, "Chat not found");
}
if (remove_recently_found_dialog_internal(dialog_id)) {

View File

@ -496,7 +496,7 @@ class MessagesManager : public Actor {
tl_object_ptr<td_api::chatEvents> get_chat_events_object(int64 random_id);
bool have_dialog(DialogId dialog_id) const;
bool have_dialog_force(DialogId dialog_id);
bool have_dialog_force(DialogId dialog_id, const char *source = "have_dialog_force");
bool have_dialog_info(DialogId dialog_id) const;
bool have_dialog_info_force(DialogId dialog_id) const;

View File

@ -151,7 +151,7 @@ void PrivacyManager::UserPrivacySettingRule::set_chat_ids(const vector<int64> &d
auto td = G()->td().get_actor_unsafe();
for (auto dialog_id_int : dialog_ids) {
DialogId dialog_id(dialog_id_int);
if (!td->messages_manager_->have_dialog_force(dialog_id)) {
if (!td->messages_manager_->have_dialog_force(dialog_id, "UserPrivacySettingRule::set_chat_ids")) {
LOG(ERROR) << "Ignore not found " << dialog_id;
continue;
}

View File

@ -6303,7 +6303,7 @@ void Td::on_request(uint64 id, const td_api::leaveChat &request) {
CREATE_OK_REQUEST_PROMISE();
DialogId dialog_id(request.chat_id_);
td_api::object_ptr<td_api::ChatMemberStatus> new_status = td_api::make_object<td_api::chatMemberStatusLeft>();
if (dialog_id.get_type() == DialogType::Channel && messages_manager_->have_dialog_force(dialog_id)) {
if (dialog_id.get_type() == DialogType::Channel && messages_manager_->have_dialog_force(dialog_id, "leaveChat")) {
auto status = contacts_manager_->get_channel_status(dialog_id.get_channel_id());
if (status.is_creator()) {
if (!status.is_member()) {
@ -7140,7 +7140,7 @@ void Td::on_request(uint64 id, const td_api::resetAllNotificationSettings &reque
void Td::on_request(uint64 id, const td_api::getMapThumbnailFile &request) {
DialogId dialog_id(request.chat_id_);
if (!messages_manager_->have_dialog_force(dialog_id)) {
if (!messages_manager_->have_dialog_force(dialog_id, "getMapThumbnailFile")) {
dialog_id = DialogId();
}

View File

@ -2823,9 +2823,9 @@ void UpdatesManager::on_update(tl_object_ptr<telegram_api::updatePhoneCallSignal
void UpdatesManager::on_update(tl_object_ptr<telegram_api::updateGroupCall> update, Promise<Unit> &&promise) {
DialogId dialog_id(ChatId(update->chat_id_));
if (!td_->messages_manager_->have_dialog_force(dialog_id)) {
if (!td_->messages_manager_->have_dialog_force(dialog_id, "updateGroupCall")) {
dialog_id = DialogId(ChannelId(update->chat_id_));
if (!td_->messages_manager_->have_dialog_force(dialog_id)) {
if (!td_->messages_manager_->have_dialog_force(dialog_id, "updateGroupCall")) {
dialog_id = DialogId();
}
}