Skip to content

Commit

Permalink
Add more secret chat checks.
Browse files Browse the repository at this point in the history
  • Loading branch information
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.