diff options
| -rw-r--r-- | td/telegram/DialogManager.cpp | 23 | ||||
| -rw-r--r-- | td/telegram/DialogManager.h | 4 | ||||
| -rw-r--r-- | td/telegram/MessagesManager.cpp | 4 | ||||
| -rw-r--r-- | td/telegram/UserManager.cpp | 12 | ||||
| -rw-r--r-- | td/telegram/UserManager.h | 4 |
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 ©_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; |
