Skip to content

Commit

Permalink
Add more secret chat checks.
Browse files Browse the repository at this point in the history
levlam committed Mar 22, 2023

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
1 parent e4942d9 commit d1146a4
Showing 2 changed files with 15 additions and 3 deletions.
6 changes: 5 additions & 1 deletion td/telegram/MessageReaction.cpp
Original file line number Diff line number Diff line change
@@ -879,7 +879,8 @@ bool is_active_reaction(const string &reaction, const FlatHashMap<string, size_t
}

void reload_message_reactions(Td *td, DialogId dialog_id, vector<MessageId> &&message_ids) {
if (!td->messages_manager_->have_input_peer(dialog_id, AccessRights::Read) || message_ids.empty()) {
if (!td->messages_manager_->have_input_peer(dialog_id, AccessRights::Read) ||
dialog_id.get_type() == DialogType::SecretChat || message_ids.empty()) {
return;
}

@@ -959,6 +960,9 @@ void report_message_reactions(Td *td, FullMessageId full_message_id, DialogId ch
if (!td->messages_manager_->have_input_peer(dialog_id, AccessRights::Read)) {
return promise.set_error(Status::Error(400, "Can't access the chat"));
}
if (dialog_id.get_type() == DialogType::SecretChat) {
return promise.set_error(Status::Error(400, "Reactions can't be reported in the chat"));
}

if (!td->messages_manager_->have_message_force(full_message_id, "report_user_reactions")) {
return promise.set_error(Status::Error(400, "Message not found"));
12 changes: 10 additions & 2 deletions td/telegram/MessagesManager.cpp
Original file line number Diff line number Diff line change
@@ -11416,7 +11416,7 @@ void MessagesManager::on_failed_scheduled_message_deletion(DialogId dialog_id, c
d->scheduled_messages->deleted_scheduled_server_message_ids_.erase(message_id.get_scheduled_server_message_id());
}
}
if (!have_input_peer(dialog_id, AccessRights::Read)) {
if (!have_input_peer(dialog_id, AccessRights::Read) || dialog_id.get_type() == DialogType::SecretChat) {
return;
}
if (is_broadcast_channel(dialog_id) &&
@@ -11498,7 +11498,9 @@ void MessagesManager::delete_dialog_history(DialogId dialog_id, bool remove_from
removed_sponsored_dialog_id_ = dialog_id;
remove_sponsored_dialog();

td_->create_handler<HidePromoDataQuery>()->send(dialog_id);
if (dialog_id.get_type() != DialogType::SecretChat) {
td_->create_handler<HidePromoDataQuery>()->send(dialog_id);
}
promise.set_value(Unit());
return;
}
@@ -25034,6 +25036,10 @@ vector<MessageId> MessagesManager::get_dialog_scheduled_messages(DialogId dialog
promise.set_error(Status::Error(400, "Not enough rights to get scheduled messages"));
return {};
}
if (d->dialog_id.get_type() == DialogType::SecretChat) {
promise.set_value(Unit());
return {};
}

if (!d->has_loaded_scheduled_messages_from_database) {
load_dialog_scheduled_messages(dialog_id, true, 0, std::move(promise));
@@ -25093,6 +25099,7 @@ vector<MessageId> MessagesManager::get_dialog_scheduled_messages(DialogId dialog

void MessagesManager::load_dialog_scheduled_messages(DialogId dialog_id, bool from_database, int64 hash,
Promise<Unit> &&promise) {
CHECK(dialog_id.get_type() != DialogType::SecretChat);
if (G()->use_message_database() && from_database) {
LOG(INFO) << "Load scheduled messages from database in " << dialog_id;
auto &queries = load_scheduled_messages_from_database_queries_[dialog_id];
@@ -37689,6 +37696,7 @@ MessagesManager::Dialog *MessagesManager::add_new_dialog(unique_ptr<Dialog> &&di
td_->contacts_manager_->get_secret_chat_user_id(dialog_id.get_secret_chat_id()));
d->is_has_bots_inited = true;
d->is_available_reactions_inited = true;
d->has_loaded_scheduled_messages_from_database = true;

break;
case DialogType::None:

0 comments on commit d1146a4

Please sign in to comment.