diff --git a/Telegram/SourceFiles/apiwrap.cpp b/Telegram/SourceFiles/apiwrap.cpp index 302b48779e..f9a11c04d4 100644 --- a/Telegram/SourceFiles/apiwrap.cpp +++ b/Telegram/SourceFiles/apiwrap.cpp @@ -293,14 +293,20 @@ void ApiWrap::topPromotionDone(const MTPhelp_PromoData &proxy) { void ApiWrap::requestDeepLinkInfo( const QString &path, - Fn callback) { + Fn callback) { request(_deepLinkInfoRequestId).cancel(); _deepLinkInfoRequestId = request(MTPhelp_GetDeepLinkInfo( MTP_string(path) )).done([=](const MTPhelp_DeepLinkInfo &result) { _deepLinkInfoRequestId = 0; if (result.type() == mtpc_help_deepLinkInfo) { - callback(result.c_help_deepLinkInfo()); + const auto &data = result.c_help_deepLinkInfo(); + callback(TextWithEntities{ + qs(data.vmessage()), + Api::EntitiesFromMTP( + _session, + data.ventities().value_or_empty()) + }, data.is_update_app()); } }).fail([=] { _deepLinkInfoRequestId = 0; diff --git a/Telegram/SourceFiles/apiwrap.h b/Telegram/SourceFiles/apiwrap.h index c04b162bdd..64306f98d0 100644 --- a/Telegram/SourceFiles/apiwrap.h +++ b/Telegram/SourceFiles/apiwrap.h @@ -192,7 +192,7 @@ public: void refreshTopPromotion(); void requestDeepLinkInfo( const QString &path, - Fn callback); + Fn callback); void requestTermsUpdate(); void acceptTerms(bytes::const_span termsId); diff --git a/Telegram/SourceFiles/core/local_url_handlers.cpp b/Telegram/SourceFiles/core/local_url_handlers.cpp index 36b717834f..c1b5947d78 100644 --- a/Telegram/SourceFiles/core/local_url_handlers.cpp +++ b/Telegram/SourceFiles/core/local_url_handlers.cpp @@ -491,25 +491,21 @@ bool HandleUnknown( return false; } const auto request = match->captured(1); - const auto callback = crl::guard(controller, [=](const MTPDhelp_deepLinkInfo &result) { - const auto text = TextWithEntities{ - qs(result.vmessage()), - Api::EntitiesFromMTP( - &controller->session(), - result.ventities().value_or_empty()) - }; - if (result.is_update_app()) { + const auto callback = crl::guard(controller, [=]( + TextWithEntities message, + bool updateRequired) { + if (updateRequired) { const auto callback = [=](Fn &&close) { Core::UpdateApplication(); close(); }; controller->show(Ui::MakeConfirmBox({ - .text = text, + .text = message, .confirmed = callback, .confirmText = tr::lng_menu_update(), })); } else { - controller->show(Ui::MakeInformBox(text)); + controller->show(Ui::MakeInformBox(message)); } }); controller->session().api().requestDeepLinkInfo(request, callback);