Update submodules

This commit is contained in:
Ilya Laktyushin 2018-12-20 03:11:16 +04:00
parent 0a9216d639
commit 6d7207bd06
6 changed files with 51 additions and 17 deletions

View File

@ -130,7 +130,7 @@ class ShareRootController: UIViewController {
}, applicationInForeground: .single(false), applicationIsActive: .single(false), clearMessageNotifications: { _ in }, applicationInForeground: .single(false), applicationIsActive: .single(false), clearMessageNotifications: { _ in
}, pushIdleTimerExtension: { }, pushIdleTimerExtension: {
return EmptyDisposable return EmptyDisposable
}, openSettings: {}, openAppStorePage: {}, registerForNotifications: { _ in }, getWindowHost: { }, openSettings: {}, openAppStorePage: {}, registerForNotifications: { _ in }, requestSiriAuthorization: { _ in }, siriAuthorization: { return .notDetermined }, getWindowHost: {
return nil return nil
}, presentNativeController: { _ in }, presentNativeController: { _ in
}, dismissNativeController: { }, dismissNativeController: {

View File

@ -602,6 +602,31 @@ private enum QueuedWakeup: Int32 {
self.registerForNotifications(account: context.account, authorize: true, completion: completion) self.registerForNotifications(account: context.account, authorize: true, completion: completion)
} }
}) })
}, requestSiriAuthorization: { completion in
if #available(iOS 10, *) {
INPreferences.requestSiriAuthorization { status in
if case .authorized = status {
completion(true)
} else {
completion(false)
}
}
} else {
completion(false)
}
}, siriAuthorization: {
if #available(iOS 10, *) {
switch INPreferences.siriAuthorizationStatus() {
case .authorized:
return .allowed
case .denied, .restricted:
return .denied
case .notDetermined:
return .notDetermined
}
} else {
return .denied
}
}, getWindowHost: { }, getWindowHost: {
return self.nativeWindow return self.nativeWindow
}, presentNativeController: { controller in }, presentNativeController: { controller in

View File

@ -588,8 +588,6 @@ final class AuthorizedApplicationContext {
} }
if #available(iOS 10.0, *) { if #available(iOS 10.0, *) {
INPreferences.requestSiriAuthorization { _ in
}
} else { } else {
DeviceAccess.authorizeAccess(to: .contacts, presentationData: strongSelf.account.telegramApplicationContext.currentPresentationData.with { $0 }, present: { c, a in DeviceAccess.authorizeAccess(to: .contacts, presentationData: strongSelf.account.telegramApplicationContext.currentPresentationData.with { $0 }, present: { c, a in
}, openSettings: {}, { _ in }) }, openSettings: {}, { _ in })
@ -805,24 +803,28 @@ final class AuthorizedApplicationContext {
let permissionsPosition = ValuePromise(0, ignoreRepeated: true) let permissionsPosition = ValuePromise(0, ignoreRepeated: true)
self.permissionsDisposable.set((combineLatest(requiredPermissions(account: account), permissionUISplitTest(postbox: account.postbox), permissionsPosition.get(), account.postbox.combinedView(keys: [.noticeEntry(ApplicationSpecificNotice.contactsPermissionWarningKey()), .noticeEntry(ApplicationSpecificNotice.notificationsPermissionWarningKey())])) self.permissionsDisposable.set((combineLatest(requiredPermissions(account: account), permissionUISplitTest(postbox: account.postbox), permissionsPosition.get(), account.postbox.combinedView(keys: [.noticeEntry(ApplicationSpecificNotice.contactsPermissionWarningKey()), .noticeEntry(ApplicationSpecificNotice.notificationsPermissionWarningKey())]))
|> deliverOnMainQueue).start(next: { [weak self] contactsAndNotifications, splitTest, position, combined in |> deliverOnMainQueue).start(next: { [weak self] required, splitTest, position, combined in
guard let strongSelf = self else { guard let strongSelf = self else {
return return
} }
let contactsTimestamp = (combined.views[.noticeEntry(ApplicationSpecificNotice.contactsPermissionWarningKey())] as? NoticeEntryView)?.value.flatMap({ ApplicationSpecificNotice.getTimestampValue($0) }) let contactsTimestamp = (combined.views[.noticeEntry(ApplicationSpecificNotice.contactsPermissionWarningKey())] as? NoticeEntryView)?.value.flatMap({ ApplicationSpecificNotice.getTimestampValue($0) })
let notificationsTimestamp = (combined.views[.noticeEntry(ApplicationSpecificNotice.notificationsPermissionWarningKey())] as? NoticeEntryView)?.value.flatMap({ ApplicationSpecificNotice.getTimestampValue($0) }) let notificationsTimestamp = (combined.views[.noticeEntry(ApplicationSpecificNotice.notificationsPermissionWarningKey())] as? NoticeEntryView)?.value.flatMap({ ApplicationSpecificNotice.getTimestampValue($0) })
if contactsTimestamp == nil, case .requestable = contactsAndNotifications.0.status { if contactsTimestamp == nil, case .requestable = required.0.status {
ApplicationSpecificNotice.setContactsPermissionWarning(postbox: account.postbox, value: 1) ApplicationSpecificNotice.setContactsPermissionWarning(postbox: account.postbox, value: 1)
} }
if notificationsTimestamp == nil, case .requestable = contactsAndNotifications.1.status { if notificationsTimestamp == nil, case .requestable = required.1.status {
ApplicationSpecificNotice.setNotificationsPermissionWarning(postbox: account.postbox, value: 1) ApplicationSpecificNotice.setNotificationsPermissionWarning(postbox: account.postbox, value: 1)
} }
let config = splitTest.configuration let config = splitTest.configuration
var order = config.order
if !order.contains(.siri) {
order.append(.siri)
}
var requestedPermissions: [(PermissionState, Bool)] = [] var requestedPermissions: [(PermissionState, Bool)] = []
var i: Int = 0 var i: Int = 0
for subject in config.order { for subject in order {
if i < position { if i < position {
i += 1 i += 1
continue continue
@ -833,15 +835,19 @@ final class AuthorizedApplicationContext {
if case .modal = config.contacts { if case .modal = config.contacts {
modal = true modal = true
} }
if case .requestable = contactsAndNotifications.0.status, contactsTimestamp != 0 { if case .requestable = required.0.status, contactsTimestamp != 0 {
requestedPermissions.append((contactsAndNotifications.0, modal || alwaysModal)) requestedPermissions.append((required.0, modal || alwaysModal))
} }
case .notifications: case .notifications:
if case .modal = config.notifications { if case .modal = config.notifications {
modal = true modal = true
} }
if case .requestable = contactsAndNotifications.1.status, notificationsTimestamp != 0 { if case .requestable = required.1.status, notificationsTimestamp != 0 {
requestedPermissions.append((contactsAndNotifications.1, modal || alwaysModal)) requestedPermissions.append((required.1, modal || alwaysModal))
}
case .siri:
if case .requestable = required.2.status {
requestedPermissions.append((required.2, false))
} }
default: default:
break break
@ -903,6 +909,10 @@ final class AuthorizedApplicationContext {
permissionsPosition.set(position + 1) permissionsPosition.set(position + 1)
ApplicationSpecificNotice.setNotificationsPermissionWarning(postbox: account.postbox, value: 0) ApplicationSpecificNotice.setNotificationsPermissionWarning(postbox: account.postbox, value: 0)
} }
case .siri:
DeviceAccess.authorizeAccess(to: .siri, account: account) { result in
permissionsPosition.set(position + 1)
}
default: default:
break break
} }
@ -910,8 +920,7 @@ final class AuthorizedApplicationContext {
} else { } else {
if let controller = strongSelf.currentPermissionsController { if let controller = strongSelf.currentPermissionsController {
strongSelf.currentPermissionsController = nil strongSelf.currentPermissionsController = nil
controller.dismiss(completion: { controller.dismiss(completion: {})
})
} }
} }
})) }))

View File

@ -80,7 +80,7 @@ func snapshotEnvironment(application: UIApplication, mainWindow: UIWindow, statu
}, openSettings: { }, openSettings: {
}, openAppStorePage: { }, openAppStorePage: {
}, registerForNotifications: { _ in }, registerForNotifications: { _ in
}, getWindowHost: { }, requestSiriAuthorization: { _ in }, siriAuthorization: { return .notDetermined }, getWindowHost: {
return nil return nil
}, presentNativeController: { _ in }, presentNativeController: { _ in
}, dismissNativeController: { }, dismissNativeController: {

@ -1 +1 @@
Subproject commit ccfa2e2f8381bcca126abba8de3fb326dfb168fc Subproject commit f161e2a23a48fd7526a9a94116edc8237d803a20

@ -1 +1 @@
Subproject commit e4941e6e21ff63b18fa461e1aed3c6d8324731ab Subproject commit 85effd85fa42116c6d227f92bf29f3f84416b5bc