Skip to content

Commit 654ff9e

Browse files
committed
Various improvements
1 parent 69c8e26 commit 654ff9e

File tree

8 files changed

+216
-60
lines changed

8 files changed

+216
-60
lines changed

‎submodules/BrowserUI/Sources/BrowserWebContent.swift‎

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -441,7 +441,7 @@ final class BrowserWebContent: UIView, BrowserContent, WKNavigationDelegate, WKU
441441
return
442442
}
443443
var dismissImpl: (() -> Void)?
444-
let controller = AuthConfirmationScreen(context: self.context, subject: result, completion: { [weak self] accountContext, accountPeer, authResult in
444+
let controller = AuthConfirmationScreen(context: self.context, requestSubject: subject, subject: result, completion: { [weak self] accountContext, accountPeer, authResult in
445445
guard let self else {
446446
return
447447
}
@@ -503,6 +503,19 @@ final class BrowserWebContent: UIView, BrowserContent, WKNavigationDelegate, WKU
503503
case .decline:
504504
let _ = self.context.engine.messages.declineUrlAuth(url: url).start()
505505
self.webView.sendEvent(name: "oauth_result_failed", data: nil)
506+
case .failed:
507+
guard case let .request(domain, _, _, _, _, _) = result else {
508+
return
509+
}
510+
let controller = UndoOverlayController(presentationData: presentationData, content: .actionSucceeded(title: presentationData.strings.AuthConfirmation_LoginFail_Title, text: presentationData.strings.AuthConfirmation_LoginFail_Text(domain).string, cancel: nil, destructive: false), action: { _ in return true })
511+
if let navigationController = self.getNavigationController() {
512+
(navigationController.topViewController as? ViewController)?.present(controller, in: .window(.root))
513+
}
514+
515+
let _ = self.context.engine.messages.declineUrlAuth(url: url).start()
516+
self.webView.sendEvent(name: "oauth_result_failed", data: nil)
517+
518+
HapticFeedback().error()
506519
}
507520
})
508521
dismissImpl = { [weak controller] in

‎submodules/OpenInExternalAppUI/Sources/OpenInOptions.swift‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,8 @@ private func allOpenInOptions(context: AccountContext, item: OpenInItem) -> [Ope
102102
if !skipSafari {
103103
options.append(OpenInOption(identifier: "safari", application: .safari, action: {
104104
var url = url
105-
if url.hasPrefix("http://") || url.hasPrefix("https://") {
106-
url = url.replacingOccurrences(of: "https://", with: "x-safari-https")
105+
if url.hasPrefix("https://") {
106+
url = url.replacingOccurrences(of: "https://", with: "x-safari-https://")
107107
}
108108
return .openUrl(url: url)
109109
}))

‎submodules/TelegramApi/Sources/Api40.swift‎

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5322,6 +5322,22 @@ public extension Api.functions.messages {
53225322
})
53235323
}
53245324
}
5325+
public extension Api.functions.messages {
5326+
static func checkUrlAuthMatchCode(url: String, matchCode: String) -> (FunctionDescription, Buffer, DeserializeFunctionResponse<Api.Bool>) {
5327+
let buffer = Buffer()
5328+
buffer.appendInt32(-911967477)
5329+
serializeString(url, buffer: buffer, boxed: false)
5330+
serializeString(matchCode, buffer: buffer, boxed: false)
5331+
return (FunctionDescription(name: "messages.checkUrlAuthMatchCode", parameters: [("url", String(describing: url)), ("matchCode", String(describing: matchCode))]), buffer, DeserializeFunctionResponse { (buffer: Buffer) -> Api.Bool? in
5332+
let reader = BufferReader(buffer)
5333+
var result: Api.Bool?
5334+
if let signature = reader.readInt32() {
5335+
result = Api.parse(reader, signature: signature) as? Api.Bool
5336+
}
5337+
return result
5338+
})
5339+
}
5340+
}
53255341
public extension Api.functions.messages {
53265342
static func clearAllDrafts() -> (FunctionDescription, Buffer, DeserializeFunctionResponse<Api.Bool>) {
53275343
let buffer = Buffer()

‎submodules/TelegramCore/Sources/TelegramEngine/Messages/RequestMessageActionCallback.swift‎

Lines changed: 34 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,7 @@ public enum MessageActionUrlAuthResult {
178178

179179
public static let requestWriteAccess = Flags(rawValue: 1 << 0)
180180
public static let requestPhoneNumber = Flags(rawValue: 1 << 1)
181+
public static let showMatchCodesFirst = Flags(rawValue: 1 << 2)
181182
}
182183

183184
public struct ClientData : Equatable {
@@ -244,25 +245,29 @@ func _internal_requestMessageActionUrlAuth(account: Account, subject: MessageAct
244245
return .default
245246
}
246247
switch result {
247-
case .urlAuthResultDefault:
248-
return .default
249-
case let .urlAuthResultAccepted(urlAuthResultAcceptedData):
250-
let url = urlAuthResultAcceptedData.url
251-
return .accepted(url: url)
252-
case let .urlAuthResultRequest(urlAuthResultRequestData):
253-
let (apiFlags, bot, domain) = (urlAuthResultRequestData.flags, urlAuthResultRequestData.bot, urlAuthResultRequestData.domain)
254-
var clientData: MessageActionUrlAuthResult.ClientData?
255-
if let browser = urlAuthResultRequestData.browser, let platform = urlAuthResultRequestData.platform, let ip = urlAuthResultRequestData.ip, let region = urlAuthResultRequestData.region {
256-
clientData = MessageActionUrlAuthResult.ClientData(browser: browser, platform: platform, ip: ip, region: region)
257-
}
258-
var flags: MessageActionUrlAuthResult.Flags = []
259-
if (apiFlags & (1 << 0)) != 0 {
260-
flags.insert(.requestWriteAccess)
261-
}
262-
if (apiFlags & (1 << 1)) != 0 {
263-
flags.insert(.requestPhoneNumber)
264-
}
265-
return .request(domain: domain, bot: TelegramUser(user: bot), clientData: clientData, flags: flags, matchCodes: urlAuthResultRequestData.matchCodes, userIdHint: urlAuthResultRequestData.userIdHint.flatMap { EnginePeer.Id(namespace: Namespaces.Peer.CloudUser, id: PeerId.Id._internalFromInt64Value($0)) })
248+
case .urlAuthResultDefault:
249+
return .default
250+
case let .urlAuthResultAccepted(urlAuthResultAcceptedData):
251+
let url = urlAuthResultAcceptedData.url
252+
return .accepted(url: url)
253+
case let .urlAuthResultRequest(urlAuthResultRequestData):
254+
let (apiFlags, bot, domain) = (urlAuthResultRequestData.flags, urlAuthResultRequestData.bot, urlAuthResultRequestData.domain)
255+
var clientData: MessageActionUrlAuthResult.ClientData?
256+
if let browser = urlAuthResultRequestData.browser, let platform = urlAuthResultRequestData.platform, let ip = urlAuthResultRequestData.ip, let region = urlAuthResultRequestData.region {
257+
clientData = MessageActionUrlAuthResult.ClientData(browser: browser, platform: platform, ip: ip, region: region)
258+
}
259+
var flags: MessageActionUrlAuthResult.Flags = []
260+
if (apiFlags & (1 << 0)) != 0 {
261+
flags.insert(.requestWriteAccess)
262+
}
263+
if (apiFlags & (1 << 1)) != 0 {
264+
flags.insert(.requestPhoneNumber)
265+
}
266+
267+
if (apiFlags & (1 << 5)) != 0 {
268+
flags.insert(.showMatchCodesFirst)
269+
}
270+
return .request(domain: domain, bot: TelegramUser(user: bot), clientData: clientData, flags: flags, matchCodes: urlAuthResultRequestData.matchCodes, userIdHint: urlAuthResultRequestData.userIdHint.flatMap { EnginePeer.Id(namespace: Namespaces.Peer.CloudUser, id: PeerId.Id._internalFromInt64Value($0)) })
266271
}
267272
}
268273
}
@@ -327,3 +332,13 @@ func _internal_acceptMessageActionUrlAuth(account: Account, subject: MessageActi
327332
}
328333
}
329334
}
335+
336+
func _internal_checkUrlAuthMatchCode(account: Account, url: String, matchCode: String) -> Signal<Bool, NoError> {
337+
return account.network.request(Api.functions.messages.checkUrlAuthMatchCode(url: url, matchCode: matchCode))
338+
|> `catch` { _ -> Signal<Api.Bool, NoError> in
339+
return .single(.boolFalse)
340+
}
341+
|> map { result in
342+
return result == .boolTrue
343+
}
344+
}

‎submodules/TelegramCore/Sources/TelegramEngine/Messages/TelegramEngineMessages.swift‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,10 @@ public extension TelegramEngine {
106106
public func declineUrlAuth(url: String) -> Signal<Never, NoError> {
107107
return _internal_declineUrlAuth(account: self.account, url: url)
108108
}
109+
110+
public func checkUrlAuthMatchCode(url: String, matchCode: String) -> Signal<Bool, NoError> {
111+
return _internal_checkUrlAuthMatchCode(account: self.account, url: url, matchCode: matchCode)
112+
}
109113

110114
public func searchMessages(location: SearchMessagesLocation, query: String, state: SearchMessagesState?, centerId: MessageId? = nil, limit: Int32 = 100) -> Signal<(SearchMessagesResult, SearchMessagesState), NoError> {
111115
return _internal_searchMessages(account: self.account, location: location, query: query, state: state, centerId: centerId, limit: limit)

‎submodules/TelegramUI/Components/AuthConfirmationScreen/BUILD‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ swift_library(
3636
"//submodules/AccountUtils",
3737
"//submodules/ActivityIndicator",
3838
"//submodules/TelegramUI/Components/PeerInfo/AccountPeerContextItem",
39+
"//submodules/TelegramUI/Components/LottieComponent",
40+
"//submodules/TelegramUI/Components/LottieComponentResourceContent",
3941
],
4042
visibility = [
4143
"//visibility:public",

0 commit comments

Comments
 (0)