From df238a70344c5470a7b90b1e5d511bc22265b269 Mon Sep 17 00:00:00 2001 From: levlam Date: Thu, 25 Aug 2022 23:15:53 +0300 Subject: [PATCH] Allow to specify application name when opening Web App. --- td/generate/scheme/td_api.tl | 6 ++++-- td/telegram/AttachMenuManager.cpp | 12 ++++++------ td/telegram/AttachMenuManager.h | 2 +- td/telegram/InlineQueriesManager.cpp | 9 +++++---- td/telegram/InlineQueriesManager.h | 3 ++- td/telegram/Td.cpp | 11 +++++++---- td/telegram/cli.cpp | 4 ++-- 7 files changed, 27 insertions(+), 20 deletions(-) diff --git a/td/generate/scheme/td_api.tl b/td/generate/scheme/td_api.tl index 295327313..dea413588 100644 --- a/td/generate/scheme/td_api.tl +++ b/td/generate/scheme/td_api.tl @@ -5235,7 +5235,8 @@ answerInlineQuery inline_query_id:int64 is_personal:Bool results:vector &&input_user, string &&url, - td_api::object_ptr &&theme, MessageId reply_to_message_id, bool silent, - DialogId as_dialog_id) { + td_api::object_ptr &&theme, string &&platform, MessageId reply_to_message_id, + bool silent, DialogId as_dialog_id) { dialog_id_ = dialog_id; bot_user_id_ = bot_user_id; reply_to_message_id_ = reply_to_message_id; @@ -104,7 +104,7 @@ class RequestWebViewQuery final : public Td::ResultHandler { 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, - std::move(theme_parameters), string(), reply_to_message_id.get_server_message_id().get(), + std::move(theme_parameters), platform, reply_to_message_id.get_server_message_id().get(), std::move(as_input_peer)))); } @@ -601,7 +601,7 @@ void AttachMenuManager::schedule_ping_web_view() { void AttachMenuManager::request_web_view(DialogId dialog_id, UserId bot_user_id, MessageId reply_to_message_id, string &&url, td_api::object_ptr &&theme, - Promise> &&promise) { + string &&platform, Promise> &&promise) { 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)); @@ -635,8 +635,8 @@ void AttachMenuManager::request_web_view(DialogId dialog_id, UserId bot_user_id, DialogId as_dialog_id = td_->messages_manager_->get_dialog_default_send_message_as_dialog_id(dialog_id); td_->create_handler(std::move(promise)) - ->send(dialog_id, bot_user_id, std::move(input_user), std::move(url), std::move(theme), reply_to_message_id, - silent, as_dialog_id); + ->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); } void AttachMenuManager::open_web_view(int64 query_id, DialogId dialog_id, UserId bot_user_id, diff --git a/td/telegram/AttachMenuManager.h b/td/telegram/AttachMenuManager.h index 18e0822af..3110aaaa6 100644 --- a/td/telegram/AttachMenuManager.h +++ b/td/telegram/AttachMenuManager.h @@ -33,7 +33,7 @@ class AttachMenuManager final : public Actor { void init(); void request_web_view(DialogId dialog_id, UserId bot_user_id, MessageId reply_to_message_id, string &&url, - td_api::object_ptr &&theme, + td_api::object_ptr &&theme, string &&platform, Promise> &&promise); void open_web_view(int64 query_id, DialogId dialog_id, UserId bot_user_id, MessageId reply_to_message_id, diff --git a/td/telegram/InlineQueriesManager.cpp b/td/telegram/InlineQueriesManager.cpp index d0f10c48a..5aa673229 100644 --- a/td/telegram/InlineQueriesManager.cpp +++ b/td/telegram/InlineQueriesManager.cpp @@ -174,7 +174,7 @@ class RequestSimpleWebViewQuery final : public Td::ResultHandler { } void send(tl_object_ptr &&input_user, const string &url, - const td_api::object_ptr &theme) { + const td_api::object_ptr &theme, string &&platform) { tl_object_ptr theme_parameters; int32 flags = 0; if (theme != nullptr) { @@ -184,7 +184,7 @@ class RequestSimpleWebViewQuery final : public Td::ResultHandler { theme_parameters->data_ = ThemeManager::get_theme_parameters_json_string(theme, false); } send_query(G()->net_query_creator().create(telegram_api::messages_requestSimpleWebView( - flags, std::move(input_user), url, std::move(theme_parameters), string()))); + flags, std::move(input_user), url, std::move(theme_parameters), platform))); } void on_result(BufferSlice packet) final { @@ -499,11 +499,12 @@ void InlineQueriesManager::answer_inline_query( void InlineQueriesManager::get_simple_web_view_url(UserId bot_user_id, string &&url, const td_api::object_ptr &theme, - Promise &&promise) { + string &&platform, Promise &&promise) { TRY_RESULT_PROMISE(promise, input_user, td_->contacts_manager_->get_input_user(bot_user_id)); TRY_RESULT_PROMISE(promise, bot_data, td_->contacts_manager_->get_bot_data(bot_user_id)); - td_->create_handler(std::move(promise))->send(std::move(input_user), url, theme); + td_->create_handler(std::move(promise)) + ->send(std::move(input_user), url, theme, std::move(platform)); } void InlineQueriesManager::send_web_view_data(UserId bot_user_id, string &&button_text, string &&data, diff --git a/td/telegram/InlineQueriesManager.h b/td/telegram/InlineQueriesManager.h index d26755a87..99f9da57a 100644 --- a/td/telegram/InlineQueriesManager.h +++ b/td/telegram/InlineQueriesManager.h @@ -46,7 +46,8 @@ class InlineQueriesManager final : public Actor { Promise &&promise) const; void get_simple_web_view_url(UserId bot_user_id, string &&url, - const td_api::object_ptr &theme, Promise &&promise); + const td_api::object_ptr &theme, string &&platform, + Promise &&promise); void send_web_view_data(UserId bot_user_id, string &&button_text, string &&data, Promise &&promise) const; diff --git a/td/telegram/Td.cpp b/td/telegram/Td.cpp index 7a201b950..842601ae1 100644 --- a/td/telegram/Td.cpp +++ b/td/telegram/Td.cpp @@ -7398,6 +7398,7 @@ void Td::on_request(uint64 id, td_api::answerInlineQuery &request) { void Td::on_request(uint64 id, td_api::getWebAppUrl &request) { CHECK_IS_USER(); CLEAN_INPUT_STRING(request.url_); + CLEAN_INPUT_STRING(request.application_name_); CREATE_REQUEST_PROMISE(); auto query_promise = PromiseCreator::lambda([promise = std::move(promise)](Result result) mutable { if (result.is_error()) { @@ -7407,7 +7408,8 @@ void Td::on_request(uint64 id, td_api::getWebAppUrl &request) { } }); inline_queries_manager_->get_simple_web_view_url(UserId(request.bot_user_id_), std::move(request.url_), - std::move(request.theme_), std::move(query_promise)); + std::move(request.theme_), std::move(request.application_name_), + std::move(query_promise)); } void Td::on_request(uint64 id, td_api::sendWebAppData &request) { @@ -7422,10 +7424,11 @@ void Td::on_request(uint64 id, td_api::sendWebAppData &request) { void Td::on_request(uint64 id, td_api::openWebApp &request) { CHECK_IS_USER(); CLEAN_INPUT_STRING(request.url_); + CLEAN_INPUT_STRING(request.application_name_); CREATE_REQUEST_PROMISE(); - attach_menu_manager_->request_web_view(DialogId(request.chat_id_), UserId(request.bot_user_id_), - MessageId(request.reply_to_message_id_), std::move(request.url_), - std::move(request.theme_), std::move(promise)); + attach_menu_manager_->request_web_view( + DialogId(request.chat_id_), UserId(request.bot_user_id_), MessageId(request.reply_to_message_id_), + 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) { diff --git a/td/telegram/cli.cpp b/td/telegram/cli.cpp index 72c7eda76..5251f1d51 100644 --- a/td/telegram/cli.cpp +++ b/td/telegram/cli.cpp @@ -3582,7 +3582,7 @@ class CliClient final : public Actor { UserId user_id; string url; get_args(args, user_id, url); - send_request(td_api::make_object(user_id, url, get_theme_parameters())); + send_request(td_api::make_object(user_id, url, get_theme_parameters(), "android")); } else if (op == "swad") { UserId user_id; string button_text; @@ -3595,7 +3595,7 @@ class CliClient final : public Actor { string url; MessageId reply_to_message_id; get_args(args, chat_id, bot_user_id, url, reply_to_message_id); - send_request(td_api::make_object(chat_id, bot_user_id, url, get_theme_parameters(), + send_request(td_api::make_object(chat_id, bot_user_id, url, get_theme_parameters(), "android", reply_to_message_id)); } else if (op == "cwa") { int64 launch_id;