Move get_dialog_reply_markup implementation to ReplyMarkup.cpp.
This commit is contained in:
parent
645102e4ed
commit
10f77aee95
|
@ -25646,42 +25646,9 @@ bool MessagesManager::can_set_game_score(DialogId dialog_id, const Message *m) c
|
||||||
}
|
}
|
||||||
|
|
||||||
Result<unique_ptr<ReplyMarkup>> MessagesManager::get_dialog_reply_markup(
|
Result<unique_ptr<ReplyMarkup>> MessagesManager::get_dialog_reply_markup(
|
||||||
DialogId dialog_id, tl_object_ptr<td_api::ReplyMarkup> &&reply_markup_ptr) const {
|
DialogId dialog_id, tl_object_ptr<td_api::ReplyMarkup> &&reply_markup) const {
|
||||||
if (reply_markup_ptr == nullptr) {
|
return get_reply_markup(std::move(reply_markup), dialog_id, td_->auth_manager_->is_bot(),
|
||||||
return nullptr;
|
td_->dialog_manager_->is_anonymous_administrator(dialog_id, nullptr));
|
||||||
}
|
|
||||||
|
|
||||||
auto dialog_type = dialog_id.get_type();
|
|
||||||
bool is_anonymous = td_->dialog_manager_->is_anonymous_administrator(dialog_id, nullptr);
|
|
||||||
|
|
||||||
bool only_inline_keyboard = is_anonymous;
|
|
||||||
bool request_buttons_allowed = dialog_type == DialogType::User;
|
|
||||||
bool switch_inline_buttons_allowed = !is_anonymous;
|
|
||||||
|
|
||||||
TRY_RESULT(reply_markup,
|
|
||||||
get_reply_markup(std::move(reply_markup_ptr), td_->auth_manager_->is_bot(), only_inline_keyboard,
|
|
||||||
request_buttons_allowed, switch_inline_buttons_allowed));
|
|
||||||
if (reply_markup == nullptr) {
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (dialog_type) {
|
|
||||||
case DialogType::User:
|
|
||||||
if (reply_markup->type != ReplyMarkup::Type::InlineKeyboard) {
|
|
||||||
reply_markup->is_personal = false;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case DialogType::Channel:
|
|
||||||
case DialogType::Chat:
|
|
||||||
case DialogType::SecretChat:
|
|
||||||
case DialogType::None:
|
|
||||||
// nothing special
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
UNREACHABLE();
|
|
||||||
}
|
|
||||||
|
|
||||||
return std::move(reply_markup);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class MessagesManager::ForwardMessagesLogEvent {
|
class MessagesManager::ForwardMessagesLogEvent {
|
||||||
|
|
|
@ -2774,7 +2774,7 @@ class MessagesManager final : public Actor {
|
||||||
void change_message_files(DialogId dialog_id, const Message *m, const vector<FileId> &old_file_ids);
|
void change_message_files(DialogId dialog_id, const Message *m, const vector<FileId> &old_file_ids);
|
||||||
|
|
||||||
Result<unique_ptr<ReplyMarkup>> get_dialog_reply_markup(
|
Result<unique_ptr<ReplyMarkup>> get_dialog_reply_markup(
|
||||||
DialogId dialog_id, tl_object_ptr<td_api::ReplyMarkup> &&reply_markup_ptr) const TD_WARN_UNUSED_RESULT;
|
DialogId dialog_id, tl_object_ptr<td_api::ReplyMarkup> &&reply_markup) const TD_WARN_UNUSED_RESULT;
|
||||||
|
|
||||||
bool get_dialog_view_as_topics(const Dialog *d) const;
|
bool get_dialog_view_as_topics(const Dialog *d) const;
|
||||||
|
|
||||||
|
|
|
@ -710,8 +710,8 @@ static Result<InlineKeyboardButton> get_inline_keyboard_button(tl_object_ptr<td_
|
||||||
return std::move(current_button);
|
return std::move(current_button);
|
||||||
}
|
}
|
||||||
|
|
||||||
Result<unique_ptr<ReplyMarkup>> get_reply_markup(tl_object_ptr<td_api::ReplyMarkup> &&reply_markup_ptr, bool is_bot,
|
Result<unique_ptr<ReplyMarkup>> get_reply_markup(td_api::object_ptr<td_api::ReplyMarkup> &&reply_markup_ptr,
|
||||||
bool only_inline_keyboard, bool request_buttons_allowed,
|
bool is_bot, bool only_inline_keyboard, bool request_buttons_allowed,
|
||||||
bool switch_inline_buttons_allowed) {
|
bool switch_inline_buttons_allowed) {
|
||||||
CHECK(!only_inline_keyboard || !request_buttons_allowed);
|
CHECK(!only_inline_keyboard || !request_buttons_allowed);
|
||||||
if (reply_markup_ptr == nullptr || !is_bot) {
|
if (reply_markup_ptr == nullptr || !is_bot) {
|
||||||
|
@ -824,6 +824,36 @@ Result<unique_ptr<ReplyMarkup>> get_reply_markup(tl_object_ptr<td_api::ReplyMark
|
||||||
return std::move(reply_markup);
|
return std::move(reply_markup);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Result<unique_ptr<ReplyMarkup>> get_reply_markup(td_api::object_ptr<td_api::ReplyMarkup> &&reply_markup_ptr,
|
||||||
|
DialogId dialog_id, bool is_bot, bool is_anonymous) {
|
||||||
|
auto dialog_type = dialog_id.get_type();
|
||||||
|
bool only_inline_keyboard = is_anonymous;
|
||||||
|
bool request_buttons_allowed = dialog_type == DialogType::User;
|
||||||
|
bool switch_inline_buttons_allowed = !is_anonymous;
|
||||||
|
|
||||||
|
TRY_RESULT(reply_markup, get_reply_markup(std::move(reply_markup_ptr), is_bot, only_inline_keyboard,
|
||||||
|
request_buttons_allowed, switch_inline_buttons_allowed));
|
||||||
|
if (reply_markup == nullptr) {
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
switch (dialog_type) {
|
||||||
|
case DialogType::User:
|
||||||
|
if (reply_markup->type != ReplyMarkup::Type::InlineKeyboard) {
|
||||||
|
reply_markup->is_personal = false;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case DialogType::Channel:
|
||||||
|
case DialogType::Chat:
|
||||||
|
case DialogType::SecretChat:
|
||||||
|
case DialogType::None:
|
||||||
|
// nothing special
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
UNREACHABLE();
|
||||||
|
}
|
||||||
|
return std::move(reply_markup);
|
||||||
|
}
|
||||||
|
|
||||||
unique_ptr<ReplyMarkup> dup_reply_markup(const unique_ptr<ReplyMarkup> &reply_markup) {
|
unique_ptr<ReplyMarkup> dup_reply_markup(const unique_ptr<ReplyMarkup> &reply_markup) {
|
||||||
if (reply_markup == nullptr) {
|
if (reply_markup == nullptr) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
|
@ -103,9 +103,12 @@ StringBuilder &operator<<(StringBuilder &string_builder, const ReplyMarkup &repl
|
||||||
unique_ptr<ReplyMarkup> get_reply_markup(tl_object_ptr<telegram_api::ReplyMarkup> &&reply_markup_ptr, bool is_bot,
|
unique_ptr<ReplyMarkup> get_reply_markup(tl_object_ptr<telegram_api::ReplyMarkup> &&reply_markup_ptr, bool is_bot,
|
||||||
bool only_inline_keyboard, bool message_contains_mention);
|
bool only_inline_keyboard, bool message_contains_mention);
|
||||||
|
|
||||||
Result<unique_ptr<ReplyMarkup>> get_reply_markup(tl_object_ptr<td_api::ReplyMarkup> &&reply_markup_ptr, bool is_bot,
|
Result<unique_ptr<ReplyMarkup>> get_reply_markup(td_api::object_ptr<td_api::ReplyMarkup> &&reply_markup_ptr,
|
||||||
bool only_inline_keyboard, bool request_buttons_allowed,
|
bool is_bot, bool only_inline_keyboard, bool request_buttons_allowed,
|
||||||
bool switch_inline_buttons_allowed) TD_WARN_UNUSED_RESULT;
|
bool switch_inline_buttons_allowed);
|
||||||
|
|
||||||
|
Result<unique_ptr<ReplyMarkup>> get_reply_markup(td_api::object_ptr<td_api::ReplyMarkup> &&reply_markup_ptr,
|
||||||
|
DialogId dialog_id, bool is_bot, bool is_anonymous);
|
||||||
|
|
||||||
unique_ptr<ReplyMarkup> dup_reply_markup(const unique_ptr<ReplyMarkup> &reply_markup);
|
unique_ptr<ReplyMarkup> dup_reply_markup(const unique_ptr<ReplyMarkup> &reply_markup);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user