From a0e9f2bbe4e6028534b3dffd8a2e2fe3a33c7914 Mon Sep 17 00:00:00 2001 From: Ali <> Date: Tue, 11 Apr 2023 23:10:49 +0400 Subject: [PATCH] Resolve phone numbers in msg links --- .../TelegramUI/Sources/OpenResolvedUrl.swift | 11 +++++++++-- submodules/UrlHandling/Sources/UrlHandling.swift | 16 ++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/submodules/TelegramUI/Sources/OpenResolvedUrl.swift b/submodules/TelegramUI/Sources/OpenResolvedUrl.swift index e34778b835..bf8b2a44f6 100644 --- a/submodules/TelegramUI/Sources/OpenResolvedUrl.swift +++ b/submodules/TelegramUI/Sources/OpenResolvedUrl.swift @@ -324,7 +324,14 @@ func openResolvedUrlImpl(_ resolvedUrl: ResolvedUrl, context: AccountContext, ur } }) } else { - let query = to.trimmingCharacters(in: CharacterSet(charactersIn: "0123456789").inverted) + let _ = (context.engine.peers.resolvePeerByPhone(phone: to) + |> deliverOnMainQueue).start(next: { peer in + if let peer = peer { + context.sharedContext.applicationBindings.dismissNativeController() + continueWithPeer(peer.id) + } + }) + /*let query = to.trimmingCharacters(in: CharacterSet(charactersIn: "0123456789").inverted) let _ = (context.account.postbox.searchContacts(query: query) |> deliverOnMainQueue).start(next: { (peers, _) in for case let peer as TelegramUser in peers { @@ -334,7 +341,7 @@ func openResolvedUrlImpl(_ resolvedUrl: ResolvedUrl, context: AccountContext, ur break } } - }) + })*/ } } else { if let url = url, !url.isEmpty { diff --git a/submodules/UrlHandling/Sources/UrlHandling.swift b/submodules/UrlHandling/Sources/UrlHandling.swift index aeefeafe42..ea4eccf27c 100644 --- a/submodules/UrlHandling/Sources/UrlHandling.swift +++ b/submodules/UrlHandling/Sources/UrlHandling.swift @@ -194,6 +194,22 @@ public func parseInternalUrl(query: String) -> ParsedInternalUrl? { if let phone = phone, let hash = hash { return .cancelAccountReset(phone: phone, hash: hash) } + } else if peerName == "msg" { + var url: String? + var text: String? + var to: String? + for queryItem in queryItems { + if let value = queryItem.value { + if queryItem.name == "url" { + url = value + } else if queryItem.name == "text" { + text = value + } else if queryItem.name == "to" { + to = value + } + } + } + return .share(url: url, text: text, to: to) } else { for queryItem in queryItems { if let value = queryItem.value {