Don't donate send message intents when passcode is enabled

Delete all already donated intents after passcode has been set up
This commit is contained in:
Ilya Laktyushin
2019-11-27 22:42:57 +04:00
parent ef78eb2879
commit e602216c7f
2 changed files with 85 additions and 70 deletions

View File

@@ -15,6 +15,7 @@ import AccountContext
import LocalAuth
import PasscodeUI
import TelegramStringFormatting
import TelegramIntents
private final class PasscodeOptionsControllerArguments {
let turnPasscodeOff: () -> Void
@@ -414,6 +415,7 @@ public func passcodeOptionsAccessController(context: AccountContext, animateIn:
}, error: { _ in
}, completed: {
completion(true)
deleteAllSendMessageIntents()
})
}
pushController?(setupController)

View File

@@ -58,7 +58,16 @@ public enum SendMessageIntentSubject: CaseIterable {
public func donateSendMessageIntent(account: Account, sharedContext: SharedAccountContext, intentContext: SendMessageIntentContext, peerIds: [PeerId]) {
if #available(iOSApplicationExtension 13.2, iOS 13.2, *) {
let _ = (sharedContext.accountManager.sharedData(keys: [ApplicationSpecificSharedDataKeys.intentsSettings])
let _ = (sharedContext.accountManager.transaction { transaction -> Bool in
if case .none = transaction.getAccessChallengeData() {
return true
} else {
return false
}
}
|> mapToSignal { unlocked -> Signal<[(Peer, SendMessageIntentSubject, UIImage?)], NoError> in
if unlocked {
return sharedContext.accountManager.sharedData(keys: [ApplicationSpecificSharedDataKeys.intentsSettings])
|> mapToSignal { sharedData -> Signal<[(Peer, SendMessageIntentSubject)], NoError> in
let settings = (sharedData.entries[ApplicationSpecificSharedDataKeys.intentsSettings] as? IntentsSettings) ?? IntentsSettings.defaultSettings
if let accountId = settings.account, accountId != account.peerId {
@@ -134,6 +143,10 @@ public func donateSendMessageIntent(account: Account, sharedContext: SharedAccou
}
return combineLatest(signals)
}
} else {
return .single([])
}
}
|> deliverOnMainQueue).start(next: { peers in
let presentationData = sharedContext.currentPresentationData.with { $0 }