From 6724de09c9fa5f50b8f5d96ff74f8357cc340461 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com> Date: Thu, 16 Mar 2023 16:59:05 +0000 Subject: [PATCH] ios: dismiss sheets on IncomingCallView, send notification if reportNewIncomingVoIPPushPayload fails --- .../Shared/Views/Call/CallController.swift | 3 ++- .../Shared/Views/Call/IncomingCallView.swift | 1 + .../ios/SimpleX NSE/NotificationService.swift | 21 +++++++++---------- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/apps/ios/Shared/Views/Call/CallController.swift b/apps/ios/Shared/Views/Call/CallController.swift index 7ad756b1c..2b5682b9c 100644 --- a/apps/ios/Shared/Views/Call/CallController.swift +++ b/apps/ios/Shared/Views/Call/CallController.swift @@ -46,6 +46,7 @@ class CallController: NSObject, CXProviderDelegate, PKPushRegistryDelegate, Obse } func providerDidReset(_ provider: CXProvider) { + logger.debug("CallController.providerDidReset") } func provider(_ provider: CXProvider, perform action: CXStartCallAction) { @@ -134,7 +135,7 @@ class CallController: NSObject, CXProviderDelegate, PKPushRegistryDelegate, Obse @objc(pushRegistry:didUpdatePushCredentials:forType:) func pushRegistry(_ registry: PKPushRegistry, didUpdate pushCredentials: PKPushCredentials, for type: PKPushType) { - + logger.debug("CallController: didUpdate push credentials for type \(type.rawValue, privacy: .public)") } func pushRegistry(_ registry: PKPushRegistry, didReceiveIncomingPushWith payload: PKPushPayload, for type: PKPushType, completion: @escaping () -> Void) { diff --git a/apps/ios/Shared/Views/Call/IncomingCallView.swift b/apps/ios/Shared/Views/Call/IncomingCallView.swift index 0044434ef..c2d5dabd4 100644 --- a/apps/ios/Shared/Views/Call/IncomingCallView.swift +++ b/apps/ios/Shared/Views/Call/IncomingCallView.swift @@ -65,6 +65,7 @@ struct IncomingCallView: View { .padding(.vertical, 12) .frame(maxWidth: .infinity) .background(Color(uiColor: .tertiarySystemGroupedBackground)) + .onAppear { dismissAllSheets() } } private func callButton(_ text: LocalizedStringKey, _ image: String, _ color: Color, action: @escaping () -> Void) -> some View { diff --git a/apps/ios/SimpleX NSE/NotificationService.swift b/apps/ios/SimpleX NSE/NotificationService.swift index 701cfd943..d338774f5 100644 --- a/apps/ios/SimpleX NSE/NotificationService.swift +++ b/apps/ios/SimpleX NSE/NotificationService.swift @@ -244,18 +244,17 @@ func receivedMsgNtf(_ res: ChatResponse) async -> (String, UNMutableNotification case let .callInvitation(invitation): // Do not post it without CallKit support, iOS will stop launching the app without showing CallKit if useCallKit() { - CXProvider.reportNewIncomingVoIPPushPayload([ - "displayName": invitation.contact.displayName, - "contactId": invitation.contact.id, - "media": invitation.callType.media.rawValue - ]) { error in - if let error = error { - logger.error("reportNewIncomingVoIPPushPayload error \(error.localizedDescription, privacy: .public)") - } else { - logger.debug("reportNewIncomingVoIPPushPayload success for \(invitation.contact.id)") - } + do { + try await CXProvider.reportNewIncomingVoIPPushPayload([ + "displayName": invitation.contact.displayName, + "contactId": invitation.contact.id, + "media": invitation.callType.media.rawValue + ]) + logger.debug("reportNewIncomingVoIPPushPayload success for \(invitation.contact.id)") + return (invitation.contact.id, (UNNotificationContent().mutableCopy() as! UNMutableNotificationContent)) + } catch let error { + logger.error("reportNewIncomingVoIPPushPayload error \(String(describing: error), privacy: .public)") } - return (invitation.contact.id, (UNNotificationContent().mutableCopy() as! UNMutableNotificationContent)) } return (invitation.contact.id, createCallInvitationNtf(invitation)) default: