Add openWebApp.message_thread_id.
This commit is contained in:
parent
e33dac507d
commit
da1b385185
@ -5449,8 +5449,9 @@ sendWebAppData bot_user_id:int53 button_text:string data:string = Ok;
|
|||||||
//@url The URL from an inlineKeyboardButtonTypeWebApp button, a botMenuButton button, or an internalLinkTypeAttachmentMenuBot link, or an empty string otherwise
|
//@url The URL from an inlineKeyboardButtonTypeWebApp button, a botMenuButton button, or an internalLinkTypeAttachmentMenuBot link, or an empty string otherwise
|
||||||
//@theme Preferred Web App theme; pass null to use the default theme
|
//@theme Preferred Web App theme; pass null to use the default theme
|
||||||
//@application_name Short name of the application; 0-64 English letters, digits, and underscores
|
//@application_name Short name of the application; 0-64 English letters, digits, and underscores
|
||||||
|
//@message_thread_id If not 0, a message thread identifier in which the message will be sent
|
||||||
//@reply_to_message_id Identifier of the replied message for the message sent by the Web App; 0 if none
|
//@reply_to_message_id Identifier of the replied message for the message sent by the Web App; 0 if none
|
||||||
openWebApp chat_id:int53 bot_user_id:int53 url:string theme:themeParameters application_name:string reply_to_message_id:int53 = WebAppInfo;
|
openWebApp chat_id:int53 bot_user_id:int53 url:string theme:themeParameters application_name:string message_thread_id:int53 reply_to_message_id:int53 = WebAppInfo;
|
||||||
|
|
||||||
//@description Informs TDLib that a previously opened Web App was closed @web_app_launch_id Identifier of Web App launch, received from openWebApp
|
//@description Informs TDLib that a previously opened Web App was closed @web_app_launch_id Identifier of Web App launch, received from openWebApp
|
||||||
closeWebApp web_app_launch_id:int64 = Ok;
|
closeWebApp web_app_launch_id:int64 = Ok;
|
||||||
|
@ -39,6 +39,7 @@ class RequestWebViewQuery final : public Td::ResultHandler {
|
|||||||
Promise<td_api::object_ptr<td_api::webAppInfo>> promise_;
|
Promise<td_api::object_ptr<td_api::webAppInfo>> promise_;
|
||||||
DialogId dialog_id_;
|
DialogId dialog_id_;
|
||||||
UserId bot_user_id_;
|
UserId bot_user_id_;
|
||||||
|
MessageId top_thread_message_id_;
|
||||||
MessageId reply_to_message_id_;
|
MessageId reply_to_message_id_;
|
||||||
DialogId as_dialog_id_;
|
DialogId as_dialog_id_;
|
||||||
bool from_attach_menu_ = false;
|
bool from_attach_menu_ = false;
|
||||||
@ -49,8 +50,8 @@ class RequestWebViewQuery final : public Td::ResultHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void send(DialogId dialog_id, UserId bot_user_id, tl_object_ptr<telegram_api::InputUser> &&input_user, string &&url,
|
void send(DialogId dialog_id, UserId bot_user_id, tl_object_ptr<telegram_api::InputUser> &&input_user, string &&url,
|
||||||
td_api::object_ptr<td_api::themeParameters> &&theme, string &&platform, MessageId reply_to_message_id,
|
td_api::object_ptr<td_api::themeParameters> &&theme, string &&platform, MessageId top_thread_message_id,
|
||||||
bool silent, DialogId as_dialog_id) {
|
MessageId reply_to_message_id, bool silent, DialogId as_dialog_id) {
|
||||||
dialog_id_ = dialog_id;
|
dialog_id_ = dialog_id;
|
||||||
bot_user_id_ = bot_user_id;
|
bot_user_id_ = bot_user_id;
|
||||||
reply_to_message_id_ = reply_to_message_id;
|
reply_to_message_id_ = reply_to_message_id;
|
||||||
@ -86,6 +87,10 @@ class RequestWebViewQuery final : public Td::ResultHandler {
|
|||||||
flags |= telegram_api::messages_requestWebView::THEME_PARAMS_MASK;
|
flags |= telegram_api::messages_requestWebView::THEME_PARAMS_MASK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (top_thread_message_id.is_valid()) {
|
||||||
|
flags |= telegram_api::messages_requestWebView::TOP_MSG_ID_MASK;
|
||||||
|
}
|
||||||
|
|
||||||
if (reply_to_message_id.is_valid()) {
|
if (reply_to_message_id.is_valid()) {
|
||||||
flags |= telegram_api::messages_requestWebView::REPLY_TO_MSG_ID_MASK;
|
flags |= telegram_api::messages_requestWebView::REPLY_TO_MSG_ID_MASK;
|
||||||
}
|
}
|
||||||
@ -104,8 +109,8 @@ class RequestWebViewQuery final : public Td::ResultHandler {
|
|||||||
|
|
||||||
send_query(G()->net_query_creator().create(telegram_api::messages_requestWebView(
|
send_query(G()->net_query_creator().create(telegram_api::messages_requestWebView(
|
||||||
flags, false /*ignored*/, false /*ignored*/, std::move(input_peer), std::move(input_user), url, start_parameter,
|
flags, false /*ignored*/, false /*ignored*/, std::move(input_peer), std::move(input_user), url, start_parameter,
|
||||||
std::move(theme_parameters), platform, reply_to_message_id.get_server_message_id().get(), 0,
|
std::move(theme_parameters), platform, reply_to_message_id.get_server_message_id().get(),
|
||||||
std::move(as_input_peer))));
|
top_thread_message_id.get_server_message_id().get(), std::move(as_input_peer))));
|
||||||
}
|
}
|
||||||
|
|
||||||
void on_result(BufferSlice packet) final {
|
void on_result(BufferSlice packet) final {
|
||||||
@ -115,8 +120,8 @@ class RequestWebViewQuery final : public Td::ResultHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
auto ptr = result_ptr.move_as_ok();
|
auto ptr = result_ptr.move_as_ok();
|
||||||
td_->attach_menu_manager_->open_web_view(ptr->query_id_, dialog_id_, bot_user_id_, reply_to_message_id_,
|
td_->attach_menu_manager_->open_web_view(ptr->query_id_, dialog_id_, bot_user_id_, top_thread_message_id_,
|
||||||
as_dialog_id_);
|
reply_to_message_id_, as_dialog_id_);
|
||||||
promise_.set_value(td_api::make_object<td_api::webAppInfo>(ptr->query_id_, ptr->url_));
|
promise_.set_value(td_api::make_object<td_api::webAppInfo>(ptr->query_id_, ptr->url_));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -134,8 +139,8 @@ class ProlongWebViewQuery final : public Td::ResultHandler {
|
|||||||
DialogId dialog_id_;
|
DialogId dialog_id_;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void send(DialogId dialog_id, UserId bot_user_id, int64 query_id, MessageId reply_to_message_id, bool silent,
|
void send(DialogId dialog_id, UserId bot_user_id, int64 query_id, MessageId top_thread_message_id,
|
||||||
DialogId as_dialog_id) {
|
MessageId reply_to_message_id, bool silent, DialogId as_dialog_id) {
|
||||||
dialog_id_ = dialog_id;
|
dialog_id_ = dialog_id;
|
||||||
|
|
||||||
auto input_peer = td_->messages_manager_->get_input_peer(dialog_id, AccessRights::Write);
|
auto input_peer = td_->messages_manager_->get_input_peer(dialog_id, AccessRights::Write);
|
||||||
@ -149,6 +154,10 @@ class ProlongWebViewQuery final : public Td::ResultHandler {
|
|||||||
flags |= telegram_api::messages_prolongWebView::REPLY_TO_MSG_ID_MASK;
|
flags |= telegram_api::messages_prolongWebView::REPLY_TO_MSG_ID_MASK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (top_thread_message_id.is_valid()) {
|
||||||
|
flags |= telegram_api::messages_prolongWebView::TOP_MSG_ID_MASK;
|
||||||
|
}
|
||||||
|
|
||||||
if (silent) {
|
if (silent) {
|
||||||
flags |= telegram_api::messages_prolongWebView::SILENT_MASK;
|
flags |= telegram_api::messages_prolongWebView::SILENT_MASK;
|
||||||
}
|
}
|
||||||
@ -163,7 +172,8 @@ class ProlongWebViewQuery final : public Td::ResultHandler {
|
|||||||
|
|
||||||
send_query(G()->net_query_creator().create(telegram_api::messages_prolongWebView(
|
send_query(G()->net_query_creator().create(telegram_api::messages_prolongWebView(
|
||||||
flags, false /*ignored*/, std::move(input_peer), r_input_user.move_as_ok(), query_id,
|
flags, false /*ignored*/, std::move(input_peer), r_input_user.move_as_ok(), query_id,
|
||||||
reply_to_message_id.get_server_message_id().get(), 0, std::move(as_input_peer))));
|
reply_to_message_id.get_server_message_id().get(), top_thread_message_id.get_server_message_id().get(),
|
||||||
|
std::move(as_input_peer))));
|
||||||
}
|
}
|
||||||
|
|
||||||
void on_result(BufferSlice packet) final {
|
void on_result(BufferSlice packet) final {
|
||||||
@ -585,9 +595,9 @@ void AttachMenuManager::ping_web_view() {
|
|||||||
for (const auto &it : opened_web_views_) {
|
for (const auto &it : opened_web_views_) {
|
||||||
const auto &opened_web_view = it.second;
|
const auto &opened_web_view = it.second;
|
||||||
bool silent = td_->messages_manager_->get_dialog_silent_send_message(opened_web_view.dialog_id_);
|
bool silent = td_->messages_manager_->get_dialog_silent_send_message(opened_web_view.dialog_id_);
|
||||||
td_->create_handler<ProlongWebViewQuery>()->send(opened_web_view.dialog_id_, opened_web_view.bot_user_id_, it.first,
|
td_->create_handler<ProlongWebViewQuery>()->send(
|
||||||
opened_web_view.reply_to_message_id_, silent,
|
opened_web_view.dialog_id_, opened_web_view.bot_user_id_, it.first, opened_web_view.top_thread_message_id_,
|
||||||
opened_web_view.as_dialog_id_);
|
opened_web_view.reply_to_message_id_, silent, opened_web_view.as_dialog_id_);
|
||||||
}
|
}
|
||||||
|
|
||||||
schedule_ping_web_view();
|
schedule_ping_web_view();
|
||||||
@ -599,9 +609,10 @@ void AttachMenuManager::schedule_ping_web_view() {
|
|||||||
ping_web_view_timeout_.set_timeout_in(PING_WEB_VIEW_TIMEOUT);
|
ping_web_view_timeout_.set_timeout_in(PING_WEB_VIEW_TIMEOUT);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AttachMenuManager::request_web_view(DialogId dialog_id, UserId bot_user_id, MessageId reply_to_message_id,
|
void AttachMenuManager::request_web_view(DialogId dialog_id, UserId bot_user_id, MessageId top_thread_message_id,
|
||||||
string &&url, td_api::object_ptr<td_api::themeParameters> &&theme,
|
MessageId reply_to_message_id, string &&url,
|
||||||
string &&platform, Promise<td_api::object_ptr<td_api::webAppInfo>> &&promise) {
|
td_api::object_ptr<td_api::themeParameters> &&theme, string &&platform,
|
||||||
|
Promise<td_api::object_ptr<td_api::webAppInfo>> &&promise) {
|
||||||
TRY_STATUS_PROMISE(promise, td_->contacts_manager_->get_bot_data(bot_user_id));
|
TRY_STATUS_PROMISE(promise, td_->contacts_manager_->get_bot_data(bot_user_id));
|
||||||
TRY_RESULT_PROMISE(promise, input_user, td_->contacts_manager_->get_input_user(bot_user_id));
|
TRY_RESULT_PROMISE(promise, input_user, td_->contacts_manager_->get_input_user(bot_user_id));
|
||||||
|
|
||||||
@ -630,17 +641,23 @@ void AttachMenuManager::request_web_view(DialogId dialog_id, UserId bot_user_id,
|
|||||||
!td_->messages_manager_->have_message_force({dialog_id, reply_to_message_id}, "request_web_view")) {
|
!td_->messages_manager_->have_message_force({dialog_id, reply_to_message_id}, "request_web_view")) {
|
||||||
reply_to_message_id = MessageId();
|
reply_to_message_id = MessageId();
|
||||||
}
|
}
|
||||||
|
if (!top_thread_message_id.is_valid() || !top_thread_message_id.is_server() ||
|
||||||
|
dialog_id.get_type() != DialogType::Channel ||
|
||||||
|
!td_->contacts_manager_->is_megagroup_channel(dialog_id.get_channel_id())) {
|
||||||
|
top_thread_message_id = MessageId();
|
||||||
|
}
|
||||||
|
|
||||||
bool silent = td_->messages_manager_->get_dialog_silent_send_message(dialog_id);
|
bool silent = td_->messages_manager_->get_dialog_silent_send_message(dialog_id);
|
||||||
DialogId as_dialog_id = td_->messages_manager_->get_dialog_default_send_message_as_dialog_id(dialog_id);
|
DialogId as_dialog_id = td_->messages_manager_->get_dialog_default_send_message_as_dialog_id(dialog_id);
|
||||||
|
|
||||||
td_->create_handler<RequestWebViewQuery>(std::move(promise))
|
td_->create_handler<RequestWebViewQuery>(std::move(promise))
|
||||||
->send(dialog_id, bot_user_id, std::move(input_user), std::move(url), std::move(theme), std::move(platform),
|
->send(dialog_id, bot_user_id, std::move(input_user), std::move(url), std::move(theme), std::move(platform),
|
||||||
reply_to_message_id, silent, as_dialog_id);
|
top_thread_message_id, reply_to_message_id, silent, as_dialog_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AttachMenuManager::open_web_view(int64 query_id, DialogId dialog_id, UserId bot_user_id,
|
void AttachMenuManager::open_web_view(int64 query_id, DialogId dialog_id, UserId bot_user_id,
|
||||||
MessageId reply_to_message_id, DialogId as_dialog_id) {
|
MessageId top_thread_message_id, MessageId reply_to_message_id,
|
||||||
|
DialogId as_dialog_id) {
|
||||||
if (query_id == 0) {
|
if (query_id == 0) {
|
||||||
LOG(ERROR) << "Receive Web App query identifier == 0";
|
LOG(ERROR) << "Receive Web App query identifier == 0";
|
||||||
return;
|
return;
|
||||||
@ -652,6 +669,7 @@ void AttachMenuManager::open_web_view(int64 query_id, DialogId dialog_id, UserId
|
|||||||
OpenedWebView opened_web_view;
|
OpenedWebView opened_web_view;
|
||||||
opened_web_view.dialog_id_ = dialog_id;
|
opened_web_view.dialog_id_ = dialog_id;
|
||||||
opened_web_view.bot_user_id_ = bot_user_id;
|
opened_web_view.bot_user_id_ = bot_user_id;
|
||||||
|
opened_web_view.top_thread_message_id_ = top_thread_message_id;
|
||||||
opened_web_view.reply_to_message_id_ = reply_to_message_id;
|
opened_web_view.reply_to_message_id_ = reply_to_message_id;
|
||||||
opened_web_view.as_dialog_id_ = as_dialog_id;
|
opened_web_view.as_dialog_id_ = as_dialog_id;
|
||||||
opened_web_views_.emplace(query_id, std::move(opened_web_view));
|
opened_web_views_.emplace(query_id, std::move(opened_web_view));
|
||||||
|
@ -32,12 +32,13 @@ class AttachMenuManager final : public Actor {
|
|||||||
|
|
||||||
void init();
|
void init();
|
||||||
|
|
||||||
void request_web_view(DialogId dialog_id, UserId bot_user_id, MessageId reply_to_message_id, string &&url,
|
void request_web_view(DialogId dialog_id, UserId bot_user_id, MessageId top_thread_message_id,
|
||||||
|
MessageId reply_to_message_id, string &&url,
|
||||||
td_api::object_ptr<td_api::themeParameters> &&theme, string &&platform,
|
td_api::object_ptr<td_api::themeParameters> &&theme, string &&platform,
|
||||||
Promise<td_api::object_ptr<td_api::webAppInfo>> &&promise);
|
Promise<td_api::object_ptr<td_api::webAppInfo>> &&promise);
|
||||||
|
|
||||||
void open_web_view(int64 query_id, DialogId dialog_id, UserId bot_user_id, MessageId reply_to_message_id,
|
void open_web_view(int64 query_id, DialogId dialog_id, UserId bot_user_id, MessageId top_thread_message_id,
|
||||||
DialogId as_dialog_id);
|
MessageId reply_to_message_id, DialogId as_dialog_id);
|
||||||
|
|
||||||
void close_web_view(int64 query_id, Promise<Unit> &&promise);
|
void close_web_view(int64 query_id, Promise<Unit> &&promise);
|
||||||
|
|
||||||
@ -154,6 +155,7 @@ class AttachMenuManager final : public Actor {
|
|||||||
struct OpenedWebView {
|
struct OpenedWebView {
|
||||||
DialogId dialog_id_;
|
DialogId dialog_id_;
|
||||||
UserId bot_user_id_;
|
UserId bot_user_id_;
|
||||||
|
MessageId top_thread_message_id_;
|
||||||
MessageId reply_to_message_id_;
|
MessageId reply_to_message_id_;
|
||||||
DialogId as_dialog_id_;
|
DialogId as_dialog_id_;
|
||||||
};
|
};
|
||||||
|
@ -7533,9 +7533,10 @@ void Td::on_request(uint64 id, td_api::openWebApp &request) {
|
|||||||
CLEAN_INPUT_STRING(request.url_);
|
CLEAN_INPUT_STRING(request.url_);
|
||||||
CLEAN_INPUT_STRING(request.application_name_);
|
CLEAN_INPUT_STRING(request.application_name_);
|
||||||
CREATE_REQUEST_PROMISE();
|
CREATE_REQUEST_PROMISE();
|
||||||
attach_menu_manager_->request_web_view(
|
attach_menu_manager_->request_web_view(DialogId(request.chat_id_), UserId(request.bot_user_id_),
|
||||||
DialogId(request.chat_id_), UserId(request.bot_user_id_), MessageId(request.reply_to_message_id_),
|
MessageId(request.message_thread_id_), MessageId(request.reply_to_message_id_),
|
||||||
std::move(request.url_), std::move(request.theme_), std::move(request.application_name_), std::move(promise));
|
std::move(request.url_), std::move(request.theme_),
|
||||||
|
std::move(request.application_name_), std::move(promise));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Td::on_request(uint64 id, const td_api::closeWebApp &request) {
|
void Td::on_request(uint64 id, const td_api::closeWebApp &request) {
|
||||||
|
@ -3637,9 +3637,11 @@ class CliClient final : public Actor {
|
|||||||
UserId bot_user_id;
|
UserId bot_user_id;
|
||||||
string url;
|
string url;
|
||||||
MessageId reply_to_message_id;
|
MessageId reply_to_message_id;
|
||||||
get_args(args, chat_id, bot_user_id, url, reply_to_message_id);
|
string message_thread_id;
|
||||||
|
get_args(args, chat_id, bot_user_id, url, reply_to_message_id, message_thread_id);
|
||||||
send_request(td_api::make_object<td_api::openWebApp>(chat_id, bot_user_id, url, as_theme_parameters(), "android",
|
send_request(td_api::make_object<td_api::openWebApp>(chat_id, bot_user_id, url, as_theme_parameters(), "android",
|
||||||
reply_to_message_id));
|
reply_to_message_id,
|
||||||
|
as_message_thread_id(message_thread_id)));
|
||||||
} else if (op == "cwa") {
|
} else if (op == "cwa") {
|
||||||
int64 launch_id;
|
int64 launch_id;
|
||||||
get_args(args, launch_id);
|
get_args(args, launch_id);
|
||||||
|
Loading…
Reference in New Issue
Block a user