Open links from tonsite:// externally.

This commit is contained in:
John Preston 2024-08-01 14:47:33 +02:00
parent 0af3028cd6
commit 4864a6996f
2 changed files with 18 additions and 5 deletions

View file

@ -257,10 +257,15 @@ void Controller::initControls() {
_subtitleText.value(), _subtitleText.value(),
st::ivSubtitle); st::ivSubtitle);
_subtitle->setSelectable(true); _subtitle->setSelectable(true);
_subtitleText.value(
) | rpl::start_with_next([=](const QString &subtitle) { _windowTitleText = _subtitleText.value(
) | rpl::map([=](const QString &subtitle) {
const auto prefix = tr::lng_iv_window_title(tr::now); const auto prefix = tr::lng_iv_window_title(tr::now);
_window->setWindowTitle(prefix + ' ' + QChar(0x2014) + ' ' + subtitle); return prefix + ' ' + QChar(0x2014) + ' ' + subtitle;
});
_windowTitleText.value(
) | rpl::start_with_next([=](const QString &title) {
_window->setWindowTitle(title);
}, _subtitle->lifetime()); }, _subtitle->lifetime());
_menuToggle.create(_subtitleWrap.get(), st::ivMenuToggle); _menuToggle.create(_subtitleWrap.get(), st::ivMenuToggle);
@ -355,6 +360,7 @@ void Controller::showTonSite(
}) | rpl::map([=](QString value) { }) | rpl::map([=](QString value) {
return HttpsToTonsite(value); return HttpsToTonsite(value);
}); });
_windowTitleText = _subtitleText;
_menuToggle->hide(); _menuToggle->hide();
} }
@ -488,7 +494,12 @@ void Controller::createWebview(const Webview::StorageId &storageId) {
}, _container->lifetime()); }, _container->lifetime());
raw->setNavigationStartHandler([=](const QString &uri, bool newWindow) { raw->setNavigationStartHandler([=](const QString &uri, bool newWindow) {
return true; if (uri.startsWith(u"http://desktop-app-resource/"_q)
|| QUrl(uri).host().toLower().endsWith(u".magic.org"_q)) {
return true;
}
_events.fire({ .type = Event::Type::OpenLink, .url = uri });
return false;
}); });
raw->setNavigationDoneHandler([=](bool success) { raw->setNavigationDoneHandler([=](bool success) {
}); });
@ -578,7 +589,8 @@ void Controller::createWebview(const Webview::StorageId &storageId) {
|| index >= _pages.size()) { || index >= _pages.size()) {
return Webview::DataResult::Failed; return Webview::DataResult::Failed;
} }
return finishWith(WrapPage(_pages[index]), "text/html; charset=utf-8"); return finishWith(
WrapPage(_pages[index]), "text/html; charset=utf-8");
} else if (id.starts_with("page") && id.ends_with(".json")) { } else if (id.starts_with("page") && id.ends_with(".json")) {
auto index = 0; auto index = 0;
const auto result = std::from_chars( const auto result = std::from_chars(

View file

@ -132,6 +132,7 @@ private:
std::unique_ptr<Ui::RpWidget> _subtitleWrap; std::unique_ptr<Ui::RpWidget> _subtitleWrap;
rpl::variable<QString> _url; rpl::variable<QString> _url;
rpl::variable<QString> _subtitleText; rpl::variable<QString> _subtitleText;
rpl::variable<QString> _windowTitleText;
std::unique_ptr<Ui::FlatLabel> _subtitle; std::unique_ptr<Ui::FlatLabel> _subtitle;
Ui::Animations::Simple _subtitleBackShift; Ui::Animations::Simple _subtitleBackShift;
Ui::Animations::Simple _subtitleForwardShift; Ui::Animations::Simple _subtitleForwardShift;