diff --git a/Telegram/CMakeLists.txt b/Telegram/CMakeLists.txt index 8401e42790..f5fb7d93e4 100644 --- a/Telegram/CMakeLists.txt +++ b/Telegram/CMakeLists.txt @@ -491,6 +491,7 @@ PRIVATE chat_helpers/ttl_media_layer_widget.h core/application.cpp core/application.h + core/cached_webview_availability.h core/bank_card_click_handler.cpp core/bank_card_click_handler.h core/base_integration.cpp diff --git a/Telegram/SourceFiles/core/application.cpp b/Telegram/SourceFiles/core/application.cpp index 4a0d319454..9b5835b6c7 100644 --- a/Telegram/SourceFiles/core/application.cpp +++ b/Telegram/SourceFiles/core/application.cpp @@ -88,7 +88,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "boxes/premium_limits_box.h" #include "ui/accessible/ui_accessible_factory.h" #include "ui/boxes/confirm_box.h" -#include "ui/controls/location_picker.h" +#include "core/cached_webview_availability.h" #include "styles/style_window.h" #include @@ -326,9 +326,8 @@ void Application::run() { QMimeDatabase().mimeTypeForName(u"text/plain"_q); // Check now to avoid re-entrance later. - [[maybe_unused]] const auto ivSupported = Iv::ShowButton(); - [[maybe_unused]] const auto lpAvailable = Ui::LocationPicker::Available( - {}); + [[maybe_unused]] const auto &webviewAvailability + = Core::CachedWebviewAvailability(); _windows.emplace(nullptr, std::make_unique()); setLastActiveWindow(_windows.front().second.get()); diff --git a/Telegram/SourceFiles/core/cached_webview_availability.h b/Telegram/SourceFiles/core/cached_webview_availability.h new file mode 100644 index 0000000000..cef8d5fd28 --- /dev/null +++ b/Telegram/SourceFiles/core/cached_webview_availability.h @@ -0,0 +1,19 @@ +/* +This file is part of Telegram Desktop, +the official desktop application for the Telegram messaging service. + +For license and copyright information please follow this link: +https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL +*/ +#pragma once + +#include "webview/webview_interface.h" + +namespace Core { + +[[nodiscard]] inline const Webview::Available &CachedWebviewAvailability() { + static const auto result = Webview::Availability(); + return result; +} + +} // namespace Core diff --git a/Telegram/SourceFiles/iv/iv_data.cpp b/Telegram/SourceFiles/iv/iv_data.cpp index 8d424c9188..8e228ab16d 100644 --- a/Telegram/SourceFiles/iv/iv_data.cpp +++ b/Telegram/SourceFiles/iv/iv_data.cpp @@ -8,7 +8,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "iv/iv_data.h" #include "iv/iv_prepare.h" -#include "webview/webview_interface.h" +#include "core/cached_webview_availability.h" #include #include @@ -102,12 +102,9 @@ QString SiteNameFromUrl(const QString &url) { } bool ShowButton() { - static const auto Supported = [&] { - const auto availability = Webview::Availability(); - return availability.customSchemeRequests - && availability.customRangeRequests; - }(); - return Supported; + const auto &availability = Core::CachedWebviewAvailability(); + return availability.customSchemeRequests + && availability.customRangeRequests; } void RecordShowFailure() { diff --git a/Telegram/SourceFiles/ui/controls/location_picker.cpp b/Telegram/SourceFiles/ui/controls/location_picker.cpp index 3f0e5e26ee..ef5d346075 100644 --- a/Telegram/SourceFiles/ui/controls/location_picker.cpp +++ b/Telegram/SourceFiles/ui/controls/location_picker.cpp @@ -38,6 +38,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "webview/webview_data_stream_memory.h" #include "webview/webview_embed.h" #include "webview/webview_interface.h" +#include "core/cached_webview_availability.h" #include "window/themes/window_theme.h" #include "styles/style_chat_helpers.h" #include "styles/style_dialogs.h" @@ -772,12 +773,10 @@ std::shared_ptr LocationPicker::uiShow() { } bool LocationPicker::Available(const LocationPickerConfig &config) { - static const auto Supported = [&] { - const auto availability = Webview::Availability(); - return availability.customSchemeRequests - && availability.customReferer; - }(); - return Supported && !config.mapsToken.isEmpty(); + const auto &availability = Core::CachedWebviewAvailability(); + return availability.customSchemeRequests + && availability.customReferer + && !config.mapsToken.isEmpty(); } void LocationPicker::setup(const Descriptor &descriptor) {