If passcode is set, and autolock is present open all links in an external browser as a workaround for invalid application states when presenting system controls (e.g. payment)

This commit is contained in:
Ali 2020-12-04 15:09:48 +00:00
parent 4b6cb17755
commit 195734d4ab

View File

@ -686,9 +686,16 @@ func openExternalUrlImpl(context: AccountContext, urlContext: OpenURLContext, ur
if parsedUrl.host == "t.me" || parsedUrl.host == "telegram.me" {
handleInternalUrl(parsedUrl.absoluteString)
} else {
let settings = context.sharedContext.accountManager.sharedData(keys: [ApplicationSpecificSharedDataKeys.webBrowserSettings])
let settings = combineLatest(context.sharedContext.accountManager.sharedData(keys: [ApplicationSpecificSharedDataKeys.webBrowserSettings, ApplicationSpecificSharedDataKeys.presentationPasscodeSettings]), context.sharedContext.accountManager.accessChallengeData())
|> take(1)
|> map { sharedData -> WebBrowserSettings in
|> map { sharedData, accessChallengeData -> WebBrowserSettings in
let passcodeSettings = sharedData.entries[ApplicationSpecificSharedDataKeys.presentationPasscodeSettings] as? PresentationPasscodeSettings ?? PresentationPasscodeSettings.defaultSettings
if accessChallengeData.data.isLockable {
if passcodeSettings.autolockTimeout != nil {
return WebBrowserSettings(defaultWebBrowser: "Safari")
}
}
if let current = sharedData.entries[ApplicationSpecificSharedDataKeys.webBrowserSettings] as? WebBrowserSettings {
return current
} else {