aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--td/telegram/DialogManager.cpp23
-rw-r--r--td/telegram/DialogManager.h4
-rw-r--r--td/telegram/MessagesManager.cpp4
-rw-r--r--td/telegram/UserManager.cpp12
-rw-r--r--td/telegram/UserManager.h4
5 files changed, 38 insertions, 9 deletions
diff --git a/td/telegram/DialogManager.cpp b/td/telegram/DialogManager.cpp
index ddda0046b..9dcd86dd5 100644
--- a/td/telegram/DialogManager.cpp
+++ b/td/telegram/DialogManager.cpp
@@ -2193,10 +2193,27 @@ string DialogManager::get_dialog_search_text(DialogId dialog_id) const {
return string();
}
-bool DialogManager::get_dialog_has_protected_content(DialogId dialog_id, bool only_my) const {
+bool DialogManager::get_dialog_has_protected_content_force(DialogId dialog_id, bool only_my) {
switch (dialog_id.get_type()) {
case DialogType::User:
- return td_->user_manager_->get_user_has_protected_content(dialog_id.get_user_id(), only_my);
+ return td_->user_manager_->get_user_has_protected_content_force(dialog_id.get_user_id(), only_my);
+ case DialogType::Chat:
+ return td_->chat_manager_->get_chat_has_protected_content(dialog_id.get_chat_id());
+ case DialogType::Channel:
+ return td_->chat_manager_->get_channel_has_protected_content(dialog_id.get_channel_id());
+ case DialogType::SecretChat:
+ return false;
+ case DialogType::None:
+ default:
+ UNREACHABLE();
+ return true;
+ }
+}
+
+bool DialogManager::get_dialog_has_protected_content(DialogId dialog_id) const {
+ switch (dialog_id.get_type()) {
+ case DialogType::User:
+ return td_->user_manager_->get_user_has_protected_content(dialog_id.get_user_id());
case DialogType::Chat:
return td_->chat_manager_->get_chat_has_protected_content(dialog_id.get_chat_id());
case DialogType::Channel:
@@ -2649,7 +2666,7 @@ void DialogManager::toggle_dialog_has_protected_content(DialogId dialog_id, bool
}
// TODO this can be wrong if there were previous toggle_dialog_has_protected_content requests
- if (get_dialog_has_protected_content(dialog_id, true) == has_protected_content) {
+ if (get_dialog_has_protected_content_force(dialog_id, true) == has_protected_content) {
return promise.set_value(Unit());
}
diff --git a/td/telegram/DialogManager.h b/td/telegram/DialogManager.h
index 8ed908c2d..b6dd92a37 100644
--- a/td/telegram/DialogManager.h
+++ b/td/telegram/DialogManager.h
@@ -185,7 +185,9 @@ class DialogManager final : public Actor {
string get_dialog_search_text(DialogId dialog_id) const;
- bool get_dialog_has_protected_content(DialogId dialog_id, bool only_my = false) const;
+ bool get_dialog_has_protected_content_force(DialogId dialog_id, bool only_my = false);
+
+ bool get_dialog_has_protected_content(DialogId dialog_id) const;
bool is_dialog_action_unneeded(DialogId dialog_id) const;
diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp
index 524c7c520..26ee7f387 100644
--- a/td/telegram/MessagesManager.cpp
+++ b/td/telegram/MessagesManager.cpp
@@ -7752,7 +7752,7 @@ string MessagesManager::get_message_search_text(const Message *m) const {
}
bool MessagesManager::get_message_has_protected_content(DialogId dialog_id, const Message *m) const {
- return m->noforwards || td_->dialog_manager_->get_dialog_has_protected_content(dialog_id);
+ return m->noforwards || td_->dialog_manager_->get_dialog_has_protected_content_force(dialog_id);
}
bool MessagesManager::can_add_message_offer(DialogId dialog_id, const Message *m) const {
@@ -23825,7 +23825,7 @@ Result<MessagesManager::ForwardedMessages> MessagesManager::get_forwarded_messag
if (!td_->dialog_manager_->have_input_peer(from_dialog_id, false, AccessRights::Read)) {
return Status::Error(400, "Can't access the chat to forward messages from");
}
- if (td_->dialog_manager_->get_dialog_has_protected_content(from_dialog_id)) {
+ if (td_->dialog_manager_->get_dialog_has_protected_content_force(from_dialog_id)) {
for (const auto &copy_option : copy_options) {
if (!copy_option.send_copy || !td_->auth_manager_->is_bot()) {
return Status::Error(400, "Message has protected content and can't be forwarded");
diff --git a/td/telegram/UserManager.cpp b/td/telegram/UserManager.cpp
index 71a6f4be9..f61affa02 100644
--- a/td/telegram/UserManager.cpp
+++ b/td/telegram/UserManager.cpp
@@ -5448,14 +5448,22 @@ td_api::object_ptr<td_api::emojiStatus> UserManager::get_secret_chat_emoji_statu
return get_user_emoji_status_object(c->user_id);
}
-bool UserManager::get_user_has_protected_content(UserId user_id, bool only_my) {
- auto user_full = get_user_full_force(user_id, "get_user_has_protected_content");
+bool UserManager::get_user_has_protected_content_force(UserId user_id, bool only_my) {
+ auto user_full = get_user_full_force(user_id, "get_user_has_protected_content_force");
if (user_full != nullptr) {
return user_full->noforwards_my_enabled || (!only_my && user_full->noforwards_peer_enabled);
}
return false;
}
+bool UserManager::get_user_has_protected_content(UserId user_id) const {
+ auto user_full = get_user_full(user_id);
+ if (user_full != nullptr) {
+ return user_full->noforwards_my_enabled || user_full->noforwards_peer_enabled;
+ }
+ return false;
+}
+
bool UserManager::get_user_stories_hidden(UserId user_id) const {
auto u = get_user(user_id);
if (u == nullptr) {
diff --git a/td/telegram/UserManager.h b/td/telegram/UserManager.h
index a5220ac94..bb5f9dc30 100644
--- a/td/telegram/UserManager.h
+++ b/td/telegram/UserManager.h
@@ -313,7 +313,9 @@ class UserManager final : public Actor {
td_api::object_ptr<td_api::emojiStatus> get_secret_chat_emoji_status_object(SecretChatId secret_chat_id) const;
- bool get_user_has_protected_content(UserId user_id, bool only_my);
+ bool get_user_has_protected_content_force(UserId user_id, bool only_my);
+
+ bool get_user_has_protected_content(UserId user_id) const;
bool get_user_stories_hidden(UserId user_id) const;