Highlight telegram/telegraph/telescope links.

This commit is contained in:
John Preston 2020-11-02 09:34:54 +03:00
parent 4432863612
commit 9592e7dfc8
3 changed files with 10 additions and 8 deletions

View file

@ -25,14 +25,14 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include <QtGui/QGuiApplication>
namespace {
bool UrlRequiresConfirmation(const QUrl &url) {
using namespace qthelp;
return !regex_match(qsl("(^|\\.)(telegram\\.org|telegra\\.ph|telesco\\.pe)$"), url.host(), RegExOption::CaseInsensitive);
}
} // namespace
return !regex_match(
"(^|\\.)(telegram\\.(org|me|dog)|t\\.me|telegra\\.ph|telesco\\.pe)$",
url.host(),
RegExOption::CaseInsensitive);
}
void HiddenUrlClickHandler::Open(QString url, QVariant context) {
url = Core::TryConvertUrlToLocal(url);
@ -48,7 +48,7 @@ void HiddenUrlClickHandler::Open(QString url, QVariant context) {
open();
} else {
const auto parsedUrl = QUrl::fromUserInput(url);
if (UrlRequiresConfirmation(url)
if (UrlRequiresConfirmation(parsedUrl)
&& QGuiApplication::keyboardModifiers() != Qt::ControlModifier) {
Core::App().hideMediaView();
const auto displayed = parsedUrl.isValid()

View file

@ -13,6 +13,8 @@ namespace Main {
class Session;
} // namespace Main
[[nodiscard]] bool UrlRequiresConfirmation(const QUrl &url);
class HiddenUrlClickHandler : public UrlClickHandler {
public:
HiddenUrlClickHandler(QString url) : UrlClickHandler(url, false) {

View file

@ -8,7 +8,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "info/profile/info_profile_values.h"
#include "core/application.h"
#include "core/local_url_handlers.h"
#include "core/click_handler_types.h"
#include "main/main_session.h"
#include "ui/wrap/slide_wrap.h"
#include "ui/text/text_utilities.h"
@ -50,7 +50,7 @@ auto PlainUsernameValue(not_null<PeerData*> peer) {
void StripExternalLinks(TextWithEntities &text) {
const auto local = [](const QString &url) {
return Core::TryConvertUrlToLocal(url).startsWith(qstr("tg://"));
return !UrlRequiresConfirmation(QUrl::fromUserInput(url));
};
const auto notLocal = [&](const EntityInText &entity) {
if (entity.type() == EntityType::CustomUrl) {