Add proof-of-concept support for keyboardButtonWebView.

This commit is contained in:
John Preston 2022-03-25 19:35:07 +04:00
parent 1d8aac26ce
commit 20bdbf531a
3 changed files with 17 additions and 7 deletions

View File

@ -222,7 +222,14 @@ void activateBotCommand(
} break;
case ButtonType::WebView: {
if (const auto m = CheckMainWidget(&msg->history()->session())) {
if (const auto bot = msg->getMessageBot()) {
m->controller()->requestAttachWebview(
bot,
bot,
button->data);
}
}
} break;
}
}

View File

@ -429,12 +429,14 @@ void SessionNavigation::resolveAttachWebview(
void SessionNavigation::requestAttachWebview(
not_null<PeerData*> peer,
not_null<UserData*> bot) {
not_null<UserData*> bot,
const QByteArray &url) {
using Flag = MTPmessages_RequestWebView::Flag;
_api.request(MTPmessages_RequestWebView(
MTP_flags(0),
MTP_flags(url.isEmpty() ? Flag(0) : Flag::f_url),
peer->input,
bot->inputUser,
MTPstring(), // start_param
MTP_bytes(url),
MTPDataJSON() // theme_params
)).done([=](const MTPWebViewResult &result) {
result.match([&](const MTPDwebViewResultUrl &data) {

View File

@ -208,6 +208,10 @@ public:
void resolveAttachWebview(
not_null<PeerData*> peer,
const QString &botUsername);
void requestAttachWebview(
not_null<PeerData*> peer,
not_null<UserData*> bot,
const QByteArray &url = QByteArray());
[[nodiscard]] auto inlineResultConfirmed() const
-> rpl::producer<InlineBots::ResultSelected>;
@ -278,9 +282,6 @@ private:
not_null<PeerData*> peer,
const PeerByLinkInfo &info);
void requestAttachWebview(
not_null<PeerData*> peer,
not_null<UserData*> bot);
void requestAddToMenu(not_null<UserData*> bot, Fn<void()> callback);
void showAttachWebview(
not_null<PeerData*> peer,