Improve internal link recognition

This commit is contained in:
Ilya Laktyushin 2022-01-31 03:53:50 +03:00
parent 7da4e1001f
commit 8fba853061
2 changed files with 25 additions and 6 deletions

View File

@ -2,6 +2,14 @@ import Foundation
import UIKit
import TelegramCore
private let whitelistedHosts: Set<String> = Set([
"telegram.org",
"t.me",
"telegram.me",
"telegra.ph",
"telesco.pe"
])
private let dataDetector = try? NSDataDetector(types: NSTextCheckingResult.CheckingType([.link]).rawValue)
private let dataAndPhoneNumberDetector = try? NSDataDetector(types: NSTextCheckingResult.CheckingType([.link, .phoneNumber]).rawValue)
private let phoneNumberDetector = try? NSDataDetector(types: NSTextCheckingResult.CheckingType([.phoneNumber]).rawValue)
@ -190,10 +198,14 @@ public func generateTextEntities(_ text: String, enabledTypes: EnabledEntityType
return
}
if url.scheme != "tg" {
guard let host = url.host?.lowercased() else {
guard var host = url.host?.lowercased() else {
return
}
if ["telegram.org", "www.telegram.org", "t.me", "www.t.me"].contains(host) {
let www = "www."
if host.hasPrefix(www) {
host.removeFirst(www.count)
}
if whitelistedHosts.contains(host) {
} else {
return
}

View File

@ -3,14 +3,21 @@ import Foundation
private let whitelistedHosts: Set<String> = Set([
"t.me",
"telegram.me",
"telegra.ph"
"telegra.ph",
"telesco.pe"
])
public func isConcealedUrlWhitelisted(_ url: URL) -> Bool {
if let host = url.host, whitelistedHosts.contains(host) {
return true
if var host = url.host?.lowercased() {
let www = "www."
if host.hasPrefix(www) {
host.removeFirst(www.count)
}
if whitelistedHosts.contains(host) {
return true
}
}
if let host = url.host, host == "telegram.org" {
if let host = url.host?.lowercased(), host == "telegram.org" {
let whitelistedNativePrefixes: Set<String> = Set([
"/blog/",
"/tour/"