From 62207e6537e15b26abf59228d15fba4c97b9d718 Mon Sep 17 00:00:00 2001 From: alexm8002 Date: Sun, 23 Aug 2026 13:57:35 +0200 Subject: [PATCH 01/25] Intents for Caplay call Signed-off-by: alexm8002 --- TalkCallIntents/Info.plist | 22 ++ TalkCallIntents/IntentHandler.swift | 390 ++++++++++++++++++++++++++++ 2 files changed, 412 insertions(+) create mode 100644 TalkCallIntents/Info.plist create mode 100644 TalkCallIntents/IntentHandler.swift diff --git a/TalkCallIntents/Info.plist b/TalkCallIntents/Info.plist new file mode 100644 index 000000000..6c5b81413 --- /dev/null +++ b/TalkCallIntents/Info.plist @@ -0,0 +1,22 @@ + + + + + NSExtension + + NSExtensionAttributes + + IntentsRestrictedWhileLocked + + IntentsSupported + + INStartCallIntent + + + NSExtensionPointIdentifier + com.apple.intents-service + NSExtensionPrincipalClass + $(PRODUCT_MODULE_NAME).IntentHandler + + + diff --git a/TalkCallIntents/IntentHandler.swift b/TalkCallIntents/IntentHandler.swift new file mode 100644 index 000000000..1fbad3644 --- /dev/null +++ b/TalkCallIntents/IntentHandler.swift @@ -0,0 +1,390 @@ +// +// IntentHandler.swift +// TalkCallIntents +// +// SPDX-License-Identifier: GPL-3.0-or-later +// + +import Foundation +import Intents + +final class IntentHandler: INExtension { + + // MARK: - Intent routing + + override func handler(for intent: INIntent) -> Any { + switch intent { + case is INStartCallIntent: + return StartCallIntentHandler() + + default: + assertionFailure("Unhandled Siri intent: \(type(of: intent))") + return self + } + } +} + + +// MARK: - Start Call + +final class StartCallIntentHandler: NSObject, INStartCallIntentHandling { + + // MARK: Configuration + + private enum Constants { + static let userActivityType = "com.2M.Talk.startCall" + + static let activityContactsKey = "contacts" + static let activityCallCapabilityKey = "callCapability" + static let activityDestinationTypeKey = "destinationType" + static let activityCallRecordIdentifierKey = "callRecordIdentifier" + } + + + // MARK: - Resolve call capability + + func resolveCallCapability( + for intent: INStartCallIntent, + with completion: @escaping (INStartCallCallCapabilityResolutionResult) -> Void + ) { + /* + * CarPlay est volontairement audio-only pour le moment. + * + * Même si Talk supporte la vidéo, une demande provenant de CarPlay + * doit donc être ramenée à un appel audio. + */ + + switch intent.callCapability { + + case .audioCall: + completion(.success(with: .audioCall)) + + case .videoCall: + completion(.success(with: .audioCall)) + + case .unknown: + completion(.success(with: .audioCall)) + + @unknown default: + completion(.success(with: .audioCall)) + } + } + + + // MARK: - Resolve destination + + func resolveDestinationType( + for intent: INStartCallIntent, + with completion: @escaping (INCallDestinationTypeResolutionResult) -> Void + ) { + /* + * Talk ne compose pas un numéro téléphonique. + * + * On travaille avec une personne / conversation Nextcloud Talk. + */ + + switch intent.destinationType { + + case .normal: + completion(.success(with: .normal)) + + case .emergency: + completion(.unsupported()) + + case .voicemail: + completion(.unsupported()) + + case .redial: + completion(.success(with: .redial)) + + case .unknown: + completion(.success(with: .normal)) + + @unknown default: + completion(.unsupported()) + } + } + + + // MARK: - Resolve contacts + + func resolveContacts( + for intent: INStartCallIntent, + with completion: @escaping ([INPersonResolutionResult]) -> Void + ) { + guard let contacts = intent.contacts, !contacts.isEmpty else { + completion([ + .needsValue() + ]) + return + } + + /* + * À ce stade, on accepte les INPerson fournis par Siri. + * + * La résolution réelle vers un NCRoom / userId Talk pourra ensuite + * être ajoutée ici sans modifier le routage général de l'extension. + */ + + let results = contacts.map { person -> INPersonResolutionResult in + .success(with: person) + } + + completion(results) + } + + + // MARK: - Resolve call-back record + + func resolveCallRecordToCallBack( + for intent: INStartCallIntent, + with completion: @escaping (INCallRecordResolutionResult) -> Void + ) { + guard let callRecord = intent.callRecordToCallBack else { + /* + * Ce paramètre n'est utile que pour un rappel. + * + * Une demande normale "appelle Paul avec Talk" n'en a pas besoin. + */ + completion(.notRequired()) + return + } + + completion(.success(with: callRecord)) + } + + + // MARK: - Confirm + + func confirm( + intent: INStartCallIntent, + completion: @escaping (INStartCallIntentResponse) -> Void + ) { + /* + * C'est ici qu'on ajoutera plus tard les validations réelles : + * + * - compte Nextcloud configuré + * - utilisateur authentifié + * - serveur Talk joignable + * - room toujours valide + * - droit de démarrer un appel + * - aucun autre appel incompatible en cours + * + * Pour l'instant on valide uniquement que Siri nous fournit + * une destination exploitable. + */ + + let hasContacts = !(intent.contacts?.isEmpty ?? true) + let hasCallRecord = intent.callRecordToCallBack != nil + + guard hasContacts || hasCallRecord else { + completion( + INStartCallIntentResponse( + code: .failureContactNotSupportedByApp, + userActivity: nil + ) + ) + return + } + + completion( + INStartCallIntentResponse( + code: .ready, + userActivity: nil + ) + ) + } + + + // MARK: - Handle + + func handle( + intent: INStartCallIntent, + completion: @escaping (INStartCallIntentResponse) -> Void + ) { + /* + * IMPORTANT : + * + * Ne jamais lancer NCCallController / CallKit depuis l'extension. + * + * Apple demande explicitement à l'Intents Extension de transférer + * le contrôle à l'application principale. + * + * NextcloudTalk recevra donc le NSUserActivity et démarrera l'appel + * via CallKitManager. + */ + + guard + !(intent.contacts?.isEmpty ?? true) + || intent.callRecordToCallBack != nil + else { + completion( + INStartCallIntentResponse( + code: .failureContactNotSupportedByApp, + userActivity: nil + ) + ) + return + } + + let activity = makeUserActivity(from: intent) + + completion( + INStartCallIntentResponse( + code: .continueInApp, + userActivity: activity + ) + ) + } + + + // MARK: - User activity + + private func makeUserActivity( + from intent: INStartCallIntent + ) -> NSUserActivity { + + let activity = NSUserActivity( + activityType: Constants.userActivityType + ) + + activity.title = NSLocalizedString( + "Start a Talk call", + comment: "Siri activity used to start a Talk call" + ) + + activity.isEligibleForHandoff = false + activity.isEligibleForSearch = false + activity.isEligibleForPublicIndexing = false + + var userInfo: [String: Any] = [:] + + if let contacts = intent.contacts { + userInfo[Constants.activityContactsKey] = + contacts.compactMap(Self.serialisePerson) + } + + userInfo[Constants.activityCallCapabilityKey] = + serialiseCallCapability(intent.callCapability) + + userInfo[Constants.activityDestinationTypeKey] = + serialiseDestinationType(intent.destinationType) + + if let callRecord = intent.callRecordToCallBack { + userInfo[Constants.activityCallRecordIdentifierKey] = + callRecord.identifier + } + + activity.userInfo = userInfo + + return activity + } + + + // MARK: - Serialisation + + private static func serialisePerson( + _ person: INPerson + ) -> [String: String]? { + + var result: [String: String] = [:] + + if let customIdentifier = person.customIdentifier, + !customIdentifier.isEmpty { + result["customIdentifier"] = customIdentifier + } + + let displayName = person.displayName + + if !displayName.isEmpty { + result["displayName"] = displayName + } + + if let contactIdentifier = person.contactIdentifier, + !contactIdentifier.isEmpty { + result["contactIdentifier"] = contactIdentifier + } + + if let handle = person.personHandle { + + if let value = handle.value, + !value.isEmpty { + result["handle"] = value + } + + result["handleType"] = + serialisePersonHandleType(handle.type) + } + + return result.isEmpty ? nil : result + } + + + private static func serialisePersonHandleType( + _ type: INPersonHandleType + ) -> String { + + switch type { + + case .unknown: + return "unknown" + + case .emailAddress: + return "email" + + case .phoneNumber: + return "phone" + + @unknown default: + return "unknown" + } + } + + + private func serialiseCallCapability( + _ capability: INCallCapability + ) -> String { + + switch capability { + + case .unknown: + return "unknown" + + case .audioCall: + return "audio" + + case .videoCall: + return "video" + + @unknown default: + return "unknown" + } + } + + + private func serialiseDestinationType( + _ destination: INCallDestinationType + ) -> String { + + switch destination { + + case .unknown: + return "unknown" + + case .normal: + return "normal" + + case .emergency: + return "emergency" + + case .voicemail: + return "voicemail" + + case .redial: + return "redial" + + @unknown default: + return "unknown" + } + } +} From 44fc8515ca3fe0e6e65fd046969252088f6b41c3 Mon Sep 17 00:00:00 2001 From: alexm8002 Date: Sun, 23 Aug 2026 13:58:22 +0200 Subject: [PATCH 02/25] Carplay specific files Signed-off-by: alexm8002 --- .../Carplay/CarPlayConversationProvider.swift | 49 ++++ NextcloudTalk/Carplay/CarPlayManager.swift | 256 ++++++++++++++++++ .../Carplay/CarPlaySceneDelegate.swift | 41 +++ 3 files changed, 346 insertions(+) create mode 100644 NextcloudTalk/Carplay/CarPlayConversationProvider.swift create mode 100644 NextcloudTalk/Carplay/CarPlayManager.swift create mode 100644 NextcloudTalk/Carplay/CarPlaySceneDelegate.swift diff --git a/NextcloudTalk/Carplay/CarPlayConversationProvider.swift b/NextcloudTalk/Carplay/CarPlayConversationProvider.swift new file mode 100644 index 000000000..2a5ce25b6 --- /dev/null +++ b/NextcloudTalk/Carplay/CarPlayConversationProvider.swift @@ -0,0 +1,49 @@ +// +// CarPlayConversationProvider.swift +// NextcloudTalk +// +// Created by Alexandre Martinez on 22/08/2026. +// + +// +// SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors +// SPDX-License-Identifier: GPL-3.0-or-later +// + +import Foundation + +final class CarPlayConversationProvider { + + static let shared = CarPlayConversationProvider() + + private init() {} + + func conversations() -> [NCRoom] { + let account = NCDatabaseManager.sharedInstance().activeAccount() + + let rooms = NCDatabaseManager.sharedInstance().roomsForAccountId( + account.accountId, + withRealm: nil + ) + + return rooms + .filter { room in + room.isVisible && + !room.isArchived && + room.supportsCalling && + room.userCanStartCall + } + .sorted { first, second in + first.lastActivity > second.lastActivity + } + } + + func room(withToken token: String) -> NCRoom? { + let account = NCDatabaseManager.sharedInstance().activeAccount() + + return NCDatabaseManager.sharedInstance().room( + withToken: token, + forAccountId: account.accountId + ) + } +} diff --git a/NextcloudTalk/Carplay/CarPlayManager.swift b/NextcloudTalk/Carplay/CarPlayManager.swift new file mode 100644 index 000000000..b8fda6110 --- /dev/null +++ b/NextcloudTalk/Carplay/CarPlayManager.swift @@ -0,0 +1,256 @@ +// +// SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors +// SPDX-License-Identifier: GPL-3.0-or-later +// + +import CarPlay +import UIKit + +@available(iOS 14.0, *) +@MainActor +final class CarPlayManager { + + static let shared = CarPlayManager() + + // MARK: - CarPlay + + private weak var interfaceController: CPInterfaceController? + + // MARK: - Init + + private init() { + NotificationCenter.default.addObserver( + self, + selector: #selector(roomsDidUpdate), + name: .NCRoomsManagerDidUpdateRooms, + object: nil + ) + + NotificationCenter.default.addObserver( + self, + selector: #selector(activeAccountDidChange), + name: .NCSettingsControllerDidChangeActiveAccount, + object: nil + ) + } + + deinit { + NotificationCenter.default.removeObserver(self) + } + + // MARK: - Connection + + func connect(_ interfaceController: CPInterfaceController) { + self.interfaceController = interfaceController + + refreshRootTemplate() + + NCRoomsManager.shared.updateRooms( + updatingUserStatus: false, + onlyLastModified: false + ) + } + + func disconnect() { + interfaceController = nil + } + + // MARK: - Root + + private func refreshRootTemplate() { + guard let interfaceController else { + return + } + + let template = makeConversationsTemplate() + + interfaceController.setRootTemplate( + template, + animated: false, + completion: nil + ) + } + + // MARK: - Conversations + + private func makeConversationsTemplate() -> CPListTemplate { + let rooms = CarPlayConversationProvider.shared.conversations() + + if rooms.isEmpty { + let emptyItem = CPListItem( + text: NSLocalizedString( + "No conversations", + comment: "" + ), + detailText: nil + ) + + emptyItem.isEnabled = false + + return CPListTemplate( + title: NSLocalizedString( + "Talk", + comment: "" + ), + sections: [ + CPListSection(items: [emptyItem]) + ] + ) + } + + let items: [CPListItem] = rooms + .prefix(100) + .map { room in + makeConversationItem(room) + } + + let section = CPListSection( + items: items + ) + + let template = CPListTemplate( + title: NSLocalizedString( + "Conversations", + comment: "" + ), + sections: [section] + ) + + return template + } + + private func makeConversationItem( + _ room: NCRoom + ) -> CPListItem { + + let item = CPListItem( + text: room.displayName, + detailText: subtitle(for: room), + image: UIImage( + systemName: "person.crop.circle" + ) + ) + + item.handler = { [weak self] _, completion in + self?.showConversation(room) + completion() + } + + return item + } + + private func subtitle( + for room: NCRoom + ) -> String? { + + if room.hasCall { + return NSLocalizedString( + "Call in progress", + comment: "" + ) + } + + if room.unreadMessages > 0 { + return String.localizedStringWithFormat( + NSLocalizedString( + "%ld unread messages", + comment: "" + ), + room.unreadMessages + ) + } + + return nil + } + + // MARK: - Conversation details + + private func showConversation( + _ room: NCRoom + ) { + guard let interfaceController else { + return + } + + let contactImage = + UIImage(systemName: "person.crop.circle") + ?? UIImage() + + let contact = CPContact( + name: room.displayName, + image: contactImage + ) + + contact.subtitle = NSLocalizedString( + "Nextcloud Talk", + comment: "" + ) + + let callButton = CPContactCallButton { [weak self] _ in + self?.startAudioCall(room) + } + + callButton.title = NSLocalizedString( + "Call", + comment: "" + ) + + contact.actions = [ + callButton + ] + + let template = CPContactTemplate( + contact: contact + ) + + interfaceController.pushTemplate( + template, + animated: true, + completion: nil + ) + } + + // MARK: - Call + + private func startAudioCall( + _ room: NCRoom + ) { + guard + room.supportsCalling, + room.userCanStartCall, + let token = room.token, + !token.isEmpty + else { + return + } + + let account = + NCDatabaseManager.sharedInstance().activeAccount() + + CallKitManager.shared.startCall( + token, + withVideoEnabled: false, + andDisplayName: room.displayName, + asInitiator: true, + silently: false, + recordingConsent: false, + withAccountId: account.accountId + ) + } + + // MARK: - Notifications + + @objc + private func roomsDidUpdate() { + DispatchQueue.main.async { [weak self] in + self?.refreshRootTemplate() + } + } + + @objc + private func activeAccountDidChange() { + DispatchQueue.main.async { [weak self] in + self?.refreshRootTemplate() + } + } +} diff --git a/NextcloudTalk/Carplay/CarPlaySceneDelegate.swift b/NextcloudTalk/Carplay/CarPlaySceneDelegate.swift new file mode 100644 index 000000000..e5252e5f6 --- /dev/null +++ b/NextcloudTalk/Carplay/CarPlaySceneDelegate.swift @@ -0,0 +1,41 @@ +// +// CarPlaySceneDelegate.swift +// NextcloudTalk +// +// Created by Alexandre Martinez on 22/08/2026. +// + +// +// SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors +// SPDX-License-Identifier: GPL-3.0-or-later +// + +import CarPlay +import UIKit + +@available(iOS 14.0, *) +final class CarPlaySceneDelegate: UIResponder, CPTemplateApplicationSceneDelegate { + + override init() { + super.init() + print("### CARPLAY SCENE DELEGATE CREATED ###") + } + + func templateApplicationScene( + _ templateApplicationScene: CPTemplateApplicationScene, + didConnect interfaceController: CPInterfaceController + ) { + print("### CARPLAY CONNECTED ###") + + CarPlayManager.shared.connect(interfaceController) + } + + func templateApplicationScene( + _ templateApplicationScene: CPTemplateApplicationScene, + didDisconnectInterfaceController interfaceController: CPInterfaceController + ) { + print("### CARPLAY DISCONNECTED ###") + + CarPlayManager.shared.disconnect() + } +} From b7de113526c8c2c116eb3b1d342a351c47f232e2 Mon Sep 17 00:00:00 2001 From: alexm8002 Date: Sun, 23 Aug 2026 13:59:59 +0200 Subject: [PATCH 03/25] Update Info.plist for scene support and encryption key Signed-off-by: alexm8002 --- NextcloudTalk/Info.plist | 59 +++++++++++++++++++++++++--------------- 1 file changed, 37 insertions(+), 22 deletions(-) diff --git a/NextcloudTalk/Info.plist b/NextcloudTalk/Info.plist index 6c8ac4641..242503d60 100644 --- a/NextcloudTalk/Info.plist +++ b/NextcloudTalk/Info.plist @@ -39,6 +39,8 @@ CFBundleVersion $(CURRENT_PROJECT_VERSION) + ITSAppUsesNonExemptEncryption + LSApplicationQueriesSchemes nextcloud @@ -60,31 +62,46 @@ Microphone is used in voice and video calls NSPhotoLibraryUsageDescription Photo Library access is needed to share pictures and videos from your device + NSSpeechRecognitionUsageDescription + Speech Recognition access is needed to transcribe a voice message to text using on-device recognition NSUserActivityTypes INSendMessageIntent - NSSpeechRecognitionUsageDescription - Speech Recognition access is needed to transcribe a voice message to text using on-device recognition UIApplicationSceneManifest - - UIApplicationSupportsMultipleScenes - - UISceneConfigurations - - UIWindowSceneSessionRoleApplication - - - UISceneConfigurationName - Default Configuration - UISceneDelegateClassName - $(PRODUCT_MODULE_NAME).SceneDelegate - UISceneStoryboardFile - Main - - - - + + UIApplicationSupportsMultipleScenes + + + UISceneConfigurations + + + UIWindowSceneSessionRoleApplication + + + UISceneConfigurationName + Default Configuration + UISceneDelegateClassName + NextcloudTalk.SceneDelegate + UISceneStoryboardFile + Main + + + + CPTemplateApplicationSceneSessionRoleApplication + + + UISceneClassName + CPTemplateApplicationScene + UISceneConfigurationName + CarPlay + UISceneDelegateClassName + NextcloudTalk.CarPlaySceneDelegate + + + + + UIBackgroundModes audio @@ -130,7 +147,5 @@ UIViewControllerBasedStatusBarAppearance - ITSAppUsesNonExemptEncryption - From 5fcb896f41ed3187ad436c47571664315e9a2370 Mon Sep 17 00:00:00 2001 From: alexm8002 Date: Sun, 23 Aug 2026 14:00:35 +0200 Subject: [PATCH 04/25] Add CarPlay communication entitlement and update groups Updated entitlements to include CarPlay communication and modified application groups. Signed-off-by: alexm8002 --- NextcloudTalk/NextcloudTalk.entitlements | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/NextcloudTalk/NextcloudTalk.entitlements b/NextcloudTalk/NextcloudTalk.entitlements index 9660871d5..bbe2d0bcc 100644 --- a/NextcloudTalk/NextcloudTalk.entitlements +++ b/NextcloudTalk/NextcloudTalk.entitlements @@ -4,12 +4,14 @@ aps-environment development + com.apple.developer.carplay-communication + com.apple.developer.usernotifications.communication com.apple.security.application-groups - group.com.nextcloud.Talk - group.com.nextcloud.apps + group.com.2M.Talk + group.com.2M.apps From 176c6b5e68fd33b26b622b36c4ec9426173ef4ba Mon Sep 17 00:00:00 2001 From: alexm8002 Date: Sun, 23 Aug 2026 14:11:26 +0200 Subject: [PATCH 05/25] Update application group identifiers in entitlements Signed-off-by: alexm8002 --- NextcloudTalk/NextcloudTalk.entitlements | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/NextcloudTalk/NextcloudTalk.entitlements b/NextcloudTalk/NextcloudTalk.entitlements index bbe2d0bcc..7df708eac 100644 --- a/NextcloudTalk/NextcloudTalk.entitlements +++ b/NextcloudTalk/NextcloudTalk.entitlements @@ -10,8 +10,8 @@ com.apple.security.application-groups - group.com.2M.Talk - group.com.2M.apps + group.com.nextcloud.Talk + group.com.nextcloud.apps From b73e9cb75c96ce63172c25b7b2caf7eaac3f392a Mon Sep 17 00:00:00 2001 From: alexm8002 Date: Sun, 23 Aug 2026 14:13:36 +0200 Subject: [PATCH 06/25] Remove commented French explanations in IntentHandler Removed commented-out French explanations regarding call capabilities and handling. Signed-off-by: alexm8002 --- TalkCallIntents/IntentHandler.swift | 42 ----------------------------- 1 file changed, 42 deletions(-) diff --git a/TalkCallIntents/IntentHandler.swift b/TalkCallIntents/IntentHandler.swift index 1fbad3644..3ca6382d8 100644 --- a/TalkCallIntents/IntentHandler.swift +++ b/TalkCallIntents/IntentHandler.swift @@ -47,12 +47,6 @@ final class StartCallIntentHandler: NSObject, INStartCallIntentHandling { for intent: INStartCallIntent, with completion: @escaping (INStartCallCallCapabilityResolutionResult) -> Void ) { - /* - * CarPlay est volontairement audio-only pour le moment. - * - * Même si Talk supporte la vidéo, une demande provenant de CarPlay - * doit donc être ramenée à un appel audio. - */ switch intent.callCapability { @@ -77,11 +71,6 @@ final class StartCallIntentHandler: NSObject, INStartCallIntentHandling { for intent: INStartCallIntent, with completion: @escaping (INCallDestinationTypeResolutionResult) -> Void ) { - /* - * Talk ne compose pas un numéro téléphonique. - * - * On travaille avec une personne / conversation Nextcloud Talk. - */ switch intent.destinationType { @@ -119,13 +108,6 @@ final class StartCallIntentHandler: NSObject, INStartCallIntentHandling { return } - /* - * À ce stade, on accepte les INPerson fournis par Siri. - * - * La résolution réelle vers un NCRoom / userId Talk pourra ensuite - * être ajoutée ici sans modifier le routage général de l'extension. - */ - let results = contacts.map { person -> INPersonResolutionResult in .success(with: person) } @@ -160,19 +142,6 @@ final class StartCallIntentHandler: NSObject, INStartCallIntentHandling { intent: INStartCallIntent, completion: @escaping (INStartCallIntentResponse) -> Void ) { - /* - * C'est ici qu'on ajoutera plus tard les validations réelles : - * - * - compte Nextcloud configuré - * - utilisateur authentifié - * - serveur Talk joignable - * - room toujours valide - * - droit de démarrer un appel - * - aucun autre appel incompatible en cours - * - * Pour l'instant on valide uniquement que Siri nous fournit - * une destination exploitable. - */ let hasContacts = !(intent.contacts?.isEmpty ?? true) let hasCallRecord = intent.callRecordToCallBack != nil @@ -202,17 +171,6 @@ final class StartCallIntentHandler: NSObject, INStartCallIntentHandling { intent: INStartCallIntent, completion: @escaping (INStartCallIntentResponse) -> Void ) { - /* - * IMPORTANT : - * - * Ne jamais lancer NCCallController / CallKit depuis l'extension. - * - * Apple demande explicitement à l'Intents Extension de transférer - * le contrôle à l'application principale. - * - * NextcloudTalk recevra donc le NSUserActivity et démarrera l'appel - * via CallKitManager. - */ guard !(intent.contacts?.isEmpty ?? true) From 37b1caff58880320303367138c3e9160dc5ed6b4 Mon Sep 17 00:00:00 2001 From: alexm8002 Date: Sun, 23 Aug 2026 14:19:08 +0200 Subject: [PATCH 07/25] Update userActivityType constant for TalkCallIntents Signed-off-by: alexm8002 --- TalkCallIntents/IntentHandler.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TalkCallIntents/IntentHandler.swift b/TalkCallIntents/IntentHandler.swift index 3ca6382d8..cfe41e61a 100644 --- a/TalkCallIntents/IntentHandler.swift +++ b/TalkCallIntents/IntentHandler.swift @@ -32,7 +32,7 @@ final class StartCallIntentHandler: NSObject, INStartCallIntentHandling { // MARK: Configuration private enum Constants { - static let userActivityType = "com.2M.Talk.startCall" + static let userActivityType = "com.nextcloud.Talk.startCall" static let activityContactsKey = "contacts" static let activityCallCapabilityKey = "callCapability" From 6a6d33053b0f3b537ba1971e84178709c20d1e83 Mon Sep 17 00:00:00 2001 From: alexm8002 Date: Sun, 30 Aug 2026 10:43:01 +0200 Subject: [PATCH 08/25] Adding project files Signed-off-by: alexm8002 --- NextcloudTalk.xcodeproj/project.pbxproj | 241 +++++++++++++++--- .../xcschemes/xcschememanagement.plist | 39 +++ .../xcshareddata/swiftpm/Package.resolved | 214 ++++++++++++++++ .../IDEFindNavigatorScopes.plist | 5 + .../UserInterfaceState.xcuserstate | Bin 0 -> 76223 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 6 + Podfile.lock | 54 ++++ 7 files changed, 530 insertions(+), 29 deletions(-) create mode 100644 NextcloudTalk.xcodeproj/xcuserdata/alexandremartinez.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 NextcloudTalk.xcworkspace/xcshareddata/swiftpm/Package.resolved create mode 100644 NextcloudTalk.xcworkspace/xcuserdata/alexandremartinez.xcuserdatad/IDEFindNavigatorScopes.plist create mode 100644 NextcloudTalk.xcworkspace/xcuserdata/alexandremartinez.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 NextcloudTalk.xcworkspace/xcuserdata/alexandremartinez.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist create mode 100644 Podfile.lock diff --git a/NextcloudTalk.xcodeproj/project.pbxproj b/NextcloudTalk.xcodeproj/project.pbxproj index 747b15217..eac04b074 100644 --- a/NextcloudTalk.xcodeproj/project.pbxproj +++ b/NextcloudTalk.xcodeproj/project.pbxproj @@ -161,6 +161,8 @@ 847EFC7236336B67A1A89358 /* libPods-BroadcastUploadExtension.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A3D305FCD7BF7E727A62F35 /* libPods-BroadcastUploadExtension.a */; }; 8789AE73BFCAA413B43319C0 /* libPods-ShareExtension.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 684807120F4439797973DF73 /* libPods-ShareExtension.a */; }; 9993261EDAC77481FF4EF58A /* libPods-NextcloudTalk.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4F7C31E9D74F550EAF89931B /* libPods-NextcloudTalk.a */; }; + FEF2798C303AF9E500E7039D /* Intents.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1FA93D8B2D70FB3400DF6CDF /* Intents.framework */; }; + FEF27993303AF9E500E7039D /* TalkCallIntents.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = FEF2798B303AF9E500E7039D /* TalkCallIntents.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -206,6 +208,13 @@ remoteGlobalIDString = 2CC0014E24A1F0E900A20167; remoteInfo = NotificationServiceExtension; }; + FEF27991303AF9E500E7039D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2C0574751EDD9E8E00D9E7F2 /* Project object */; + proxyType = 1; + remoteGlobalIDString = FEF2798A303AF9E500E7039D; + remoteInfo = TalkCallIntents; + }; /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -278,6 +287,7 @@ files = ( 2C62AFAE24C08845007E460A /* ShareExtension.appex in Embed App Extensions */, 2CC0015724A1F0E900A20167 /* NotificationServiceExtension.appex in Embed App Extensions */, + FEF27993303AF9E500E7039D /* TalkCallIntents.appex in Embed App Extensions */, 1FF2FD722AB99CCB000C9905 /* BroadcastUploadExtension.appex in Embed App Extensions */, ); name = "Embed App Extensions"; @@ -464,6 +474,8 @@ B7874918820589BF8FD69BED /* Pods-NextcloudTalkTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NextcloudTalkTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-NextcloudTalkTests/Pods-NextcloudTalkTests.release.xcconfig"; sourceTree = ""; }; D6DF51D976DC0F681FF83F7B /* Pods-NotificationServiceExtension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NotificationServiceExtension.debug.xcconfig"; path = "Pods/Target Support Files/Pods-NotificationServiceExtension/Pods-NotificationServiceExtension.debug.xcconfig"; sourceTree = ""; }; D86091EC1125C3057B9A299B /* Pods-NotificationServiceExtension.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NotificationServiceExtension.release.xcconfig"; path = "Pods/Target Support Files/Pods-NotificationServiceExtension/Pods-NotificationServiceExtension.release.xcconfig"; sourceTree = ""; }; + FEF279863039F30600E7039D /* Untitled.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Untitled.swift; sourceTree = ""; }; + FEF2798B303AF9E500E7039D /* TalkCallIntents.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = TalkCallIntents.appex; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */ @@ -985,6 +997,13 @@ ); target = 2C05747C1EDD9E8E00D9E7F2 /* NextcloudTalk */; }; + FEF27997303AF9E500E7039D /* Exceptions for "TalkCallIntents" folder in "TalkCallIntents" target */ = { + isa = PBXFileSystemSynchronizedBuildFileExceptionSet; + membershipExceptions = ( + Info.plist, + ); + target = FEF2798A303AF9E500E7039D /* TalkCallIntents */; + }; /* End PBXFileSystemSynchronizedBuildFileExceptionSet section */ /* Begin PBXFileSystemSynchronizedRootGroup section */ @@ -1185,6 +1204,19 @@ path = TalkIntents; sourceTree = ""; }; + FEF26F573039D9C400E7039D /* Carplay */ = { + isa = PBXFileSystemSynchronizedRootGroup; + path = Carplay; + sourceTree = ""; + }; + FEF2798D303AF9E500E7039D /* TalkCallIntents */ = { + isa = PBXFileSystemSynchronizedRootGroup; + exceptions = ( + FEF27997303AF9E500E7039D /* Exceptions for "TalkCallIntents" folder in "TalkCallIntents" target */, + ); + path = TalkCallIntents; + sourceTree = ""; + }; /* End PBXFileSystemSynchronizedRootGroup section */ /* Begin PBXFrameworksBuildPhase section */ @@ -1321,6 +1353,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + FEF27988303AF9E500E7039D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + FEF2798C303AF9E500E7039D /* Intents.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -1332,6 +1372,7 @@ 1F2058A32CEBE4EA00AAA673 /* BroadcastUploadExtension */, 1F8977F52DB0F76100E8114D /* NextcloudTalkTests */, 1FA93D9D2D70FCC200DF6CDF /* TalkIntents */, + FEF2798D303AF9E500E7039D /* TalkCallIntents */, 2C05747E1EDD9E8E00D9E7F2 /* Products */, 2C05749C1EDDA01700D9E7F2 /* ThirdParty */, 2C05747F1EDD9E8E00D9E7F2 /* NextcloudTalk */, @@ -1351,6 +1392,7 @@ 1FF2FD5B2AB99CCB000C9905 /* BroadcastUploadExtension.appex */, 1F6D8C302B2E3756004376B8 /* NextcloudTalkTests.xctest */, 1FA93D9C2D70FCC200DF6CDF /* TalkIntents.appex */, + FEF2798B303AF9E500E7039D /* TalkCallIntents.appex */, ); name = Products; sourceTree = ""; @@ -1358,6 +1400,8 @@ 2C05747F1EDD9E8E00D9E7F2 /* NextcloudTalk */ = { isa = PBXGroup; children = ( + FEF279863039F30600E7039D /* Untitled.swift */, + FEF26F573039D9C400E7039D /* Carplay */, 1F9629252E8E6A2100EC9BEE /* Calls */, 1F9629262E8E6A6800EC9BEE /* Chat */, 1F9629302E8E6B3D00EC9BEE /* Contacts */, @@ -1678,6 +1722,7 @@ 2C62AFAD24C08845007E460A /* PBXTargetDependency */, 1FF2FD712AB99CCB000C9905 /* PBXTargetDependency */, 1FA93DA42D70FCC200DF6CDF /* PBXTargetDependency */, + FEF27992303AF9E500E7039D /* PBXTargetDependency */, ); fileSystemSynchronizedGroups = ( 1F2058832CEBE4E700AAA673 /* ShareExtension */, @@ -1700,6 +1745,7 @@ 1F96297A2E8E6D1200EC9BEE /* User Interface */, 1F9629822E8E6D5400EC9BEE /* WebRTC */, 1F9629882E8E6E2900EC9BEE /* Sounds */, + FEF26F573039D9C400E7039D /* Carplay */, ); name = NextcloudTalk; packageProductDependencies = ( @@ -1806,13 +1852,35 @@ productReference = 2CC0014F24A1F0E900A20167 /* NotificationServiceExtension.appex */; productType = "com.apple.product-type.app-extension"; }; + FEF2798A303AF9E500E7039D /* TalkCallIntents */ = { + isa = PBXNativeTarget; + buildConfigurationList = FEF27994303AF9E500E7039D /* Build configuration list for PBXNativeTarget "TalkCallIntents" */; + buildPhases = ( + FEF27987303AF9E500E7039D /* Sources */, + FEF27988303AF9E500E7039D /* Frameworks */, + FEF27989303AF9E500E7039D /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + fileSystemSynchronizedGroups = ( + FEF2798D303AF9E500E7039D /* TalkCallIntents */, + ); + name = TalkCallIntents; + packageProductDependencies = ( + ); + productName = TalkCallIntents; + productReference = FEF2798B303AF9E500E7039D /* TalkCallIntents.appex */; + productType = "com.apple.product-type.app-extension"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ 2C0574751EDD9E8E00D9E7F2 /* Project object */ = { isa = PBXProject; attributes = { - LastSwiftUpdateCheck = 1620; + LastSwiftUpdateCheck = 2650; LastUpgradeCheck = 1320; ORGANIZATIONNAME = ""; TargetAttributes = { @@ -1860,6 +1928,9 @@ LastSwiftMigration = 1220; ProvisioningStyle = Automatic; }; + FEF2798A303AF9E500E7039D = { + CreatedOnToolsVersion = 26.5; + }; }; }; buildConfigurationList = 2C0574781EDD9E8E00D9E7F2 /* Build configuration list for PBXProject "NextcloudTalk" */; @@ -1932,6 +2003,7 @@ 1FD8AD892A3A162100787C16 /* NextcloudTalkUITests */, 1F6D8C2F2B2E3756004376B8 /* NextcloudTalkTests */, 1FA93D9B2D70FCC200DF6CDF /* TalkIntents */, + FEF2798A303AF9E500E7039D /* TalkCallIntents */, ); }; /* End PBXProject section */ @@ -2008,6 +2080,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + FEF27989303AF9E500E7039D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ @@ -2307,6 +2386,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + FEF27987303AF9E500E7039D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ @@ -2340,6 +2426,11 @@ target = 2CC0014E24A1F0E900A20167 /* NotificationServiceExtension */; targetProxy = 2CC0015524A1F0E900A20167 /* PBXContainerItemProxy */; }; + FEF27992303AF9E500E7039D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = FEF2798A303AF9E500E7039D /* TalkCallIntents */; + targetProxy = FEF27991303AF9E500E7039D /* PBXContainerItemProxy */; + }; /* End PBXTargetDependency section */ /* Begin PBXVariantGroup section */ @@ -2478,7 +2569,7 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = NKUJUXUJ3B; + DEVELOPMENT_TEAM = 4BV6J54P25; ENABLE_USER_SCRIPT_SANDBOXING = NO; GCC_C_LANGUAGE_STANDARD = gnu17; GENERATE_INFOPLIST_FILE = YES; @@ -2497,7 +2588,7 @@ MARKETING_VERSION = 1.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = com.nextcloud.Talk.NextcloudTalkTests; + PRODUCT_BUNDLE_IDENTIFIER = com.2M.Talk.NextcloudTalkTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; SWIFT_EMIT_LOC_STRINGS = NO; @@ -2522,7 +2613,7 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = NKUJUXUJ3B; + DEVELOPMENT_TEAM = 4BV6J54P25; ENABLE_USER_SCRIPT_SANDBOXING = NO; GCC_C_LANGUAGE_STANDARD = gnu17; GENERATE_INFOPLIST_FILE = YES; @@ -2540,7 +2631,7 @@ LOCALIZATION_PREFERS_STRING_CATALOGS = YES; MARKETING_VERSION = 1.0; MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = com.nextcloud.Talk.NextcloudTalkTests; + PRODUCT_BUNDLE_IDENTIFIER = com.2M.Talk.NextcloudTalkTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_EMIT_LOC_STRINGS = NO; SWIFT_OBJC_BRIDGING_HEADER = "NextcloudTalk/NextcloudTalk-Bridging-Header.h"; @@ -2563,11 +2654,12 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 2; - DEVELOPMENT_TEAM = NKUJUXUJ3B; + DEVELOPMENT_TEAM = 4BV6J54P25; ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu17; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = TalkIntents/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = "$(PRODUCT_NAME)"; INFOPLIST_KEY_NSHumanReadableCopyright = ""; IPHONEOS_DEPLOYMENT_TARGET = 17.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -2579,7 +2671,7 @@ MARKETING_VERSION = 25.0.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = com.nextcloud.Talk.TalkIntents; + PRODUCT_BUNDLE_IDENTIFIER = com.2M.Talk.TalkIntents; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; @@ -2605,11 +2697,12 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 2; - DEVELOPMENT_TEAM = NKUJUXUJ3B; + DEVELOPMENT_TEAM = 4BV6J54P25; ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu17; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = TalkIntents/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = "$(PRODUCT_NAME)"; INFOPLIST_KEY_NSHumanReadableCopyright = ""; IPHONEOS_DEPLOYMENT_TARGET = 17.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -2620,7 +2713,7 @@ LOCALIZATION_PREFERS_STRING_CATALOGS = YES; MARKETING_VERSION = 25.0.0; MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = com.nextcloud.Talk.TalkIntents; + PRODUCT_BUNDLE_IDENTIFIER = com.2M.Talk.TalkIntents; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; @@ -2641,14 +2734,14 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = NKUJUXUJ3B; + DEVELOPMENT_TEAM = 4BV6J54P25; GCC_C_LANGUAGE_STANDARD = gnu11; GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 16.0; MARKETING_VERSION = 1.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = com.nextcloud.Talk.NextcloudTalkUITests; + PRODUCT_BUNDLE_IDENTIFIER = com.2M.Talk.NextcloudTalkUITests; PRODUCT_NAME = "$(TARGET_NAME)"; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTS_MACCATALYST = NO; @@ -2670,13 +2763,13 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = NKUJUXUJ3B; + DEVELOPMENT_TEAM = 4BV6J54P25; GCC_C_LANGUAGE_STANDARD = gnu11; GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 16.0; MARKETING_VERSION = 1.0; MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = com.nextcloud.Talk.NextcloudTalkUITests; + PRODUCT_BUNDLE_IDENTIFIER = com.2M.Talk.NextcloudTalkUITests; PRODUCT_NAME = "$(TARGET_NAME)"; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTS_MACCATALYST = NO; @@ -2701,7 +2794,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 2; - DEVELOPMENT_TEAM = NKUJUXUJ3B; + DEVELOPMENT_TEAM = 4BV6J54P25; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", @@ -2721,7 +2814,7 @@ MARKETING_VERSION = 25.0.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = com.nextcloud.Talk.BroadcastUploadExtension; + PRODUCT_BUNDLE_IDENTIFIER = com.2M.Talk.BroadcastUploadExtension; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = APP_EXTENSION; @@ -2746,7 +2839,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 2; - DEVELOPMENT_TEAM = NKUJUXUJ3B; + DEVELOPMENT_TEAM = 4BV6J54P25; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", @@ -2765,7 +2858,7 @@ ); MARKETING_VERSION = 25.0.0; MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = com.nextcloud.Talk.BroadcastUploadExtension; + PRODUCT_BUNDLE_IDENTIFIER = com.2M.Talk.BroadcastUploadExtension; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = APP_EXTENSION; @@ -2906,7 +2999,7 @@ CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 2; DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = NKUJUXUJ3B; + DEVELOPMENT_TEAM = 4BV6J54P25; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; GCC_SYMBOLS_PRIVATE_EXTERN = NO; @@ -2928,7 +3021,7 @@ ); LIBRARY_SEARCH_PATHS = "$(inherited)"; MARKETING_VERSION = 25.0.0; - PRODUCT_BUNDLE_IDENTIFIER = com.nextcloud.Talk; + PRODUCT_BUNDLE_IDENTIFIER = com.2M.Talk; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OBJC_BRIDGING_HEADER = "NextcloudTalk/NextcloudTalk-Bridging-Header.h"; @@ -2951,7 +3044,7 @@ CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 2; DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = NKUJUXUJ3B; + DEVELOPMENT_TEAM = 4BV6J54P25; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; GCC_SYMBOLS_PRIVATE_EXTERN = NO; @@ -2973,7 +3066,7 @@ ); LIBRARY_SEARCH_PATHS = "$(inherited)"; MARKETING_VERSION = 25.0.0; - PRODUCT_BUNDLE_IDENTIFIER = com.nextcloud.Talk; + PRODUCT_BUNDLE_IDENTIFIER = com.2M.Talk; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OBJC_BRIDGING_HEADER = "NextcloudTalk/NextcloudTalk-Bridging-Header.h"; @@ -3005,7 +3098,7 @@ CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 2; DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = NKUJUXUJ3B; + DEVELOPMENT_TEAM = 4BV6J54P25; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -3060,7 +3153,7 @@ MARKETING_VERSION = 25.0.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = com.nextcloud.Talk.ShareExtension; + PRODUCT_BUNDLE_IDENTIFIER = com.2M.Talk.ShareExtension; PRODUCT_NAME = ShareExtension; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = APP_EXTENSION; @@ -3096,7 +3189,7 @@ CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 2; DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = NKUJUXUJ3B; + DEVELOPMENT_TEAM = 4BV6J54P25; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -3150,7 +3243,7 @@ ); MARKETING_VERSION = 25.0.0; MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = com.nextcloud.Talk.ShareExtension; + PRODUCT_BUNDLE_IDENTIFIER = com.2M.Talk.ShareExtension; PRODUCT_NAME = ShareExtension; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = APP_EXTENSION; @@ -3184,7 +3277,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 2; - DEVELOPMENT_TEAM = NKUJUXUJ3B; + DEVELOPMENT_TEAM = 4BV6J54P25; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -3222,7 +3315,7 @@ MARKETING_VERSION = 25.0.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = com.nextcloud.Talk.NotificationServiceExtension; + PRODUCT_BUNDLE_IDENTIFIER = com.2M.Talk.NotificationServiceExtension; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = APP_EXTENSION; @@ -3256,7 +3349,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 2; - DEVELOPMENT_TEAM = NKUJUXUJ3B; + DEVELOPMENT_TEAM = 4BV6J54P25; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -3293,7 +3386,7 @@ LIBRARY_SEARCH_PATHS = "$(inherited)"; MARKETING_VERSION = 25.0.0; MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = com.nextcloud.Talk.NotificationServiceExtension; + PRODUCT_BUNDLE_IDENTIFIER = com.2M.Talk.NotificationServiceExtension; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = APP_EXTENSION; @@ -3304,6 +3397,87 @@ }; name = Release; }; + FEF27995303AF9E500E7039D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 4BV6J54P25; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = TalkCallIntents/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = TalkCallIntents; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; + IPHONEOS_DEPLOYMENT_TARGET = 26.5; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@executable_path/../../Frameworks", + ); + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MARKETING_VERSION = 1.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = com.2M.Talk.TalkCallIntents; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + STRING_CATALOG_GENERATE_SYMBOLS = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; + SWIFT_APPROACHABLE_CONCURRENCY = YES; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + FEF27996303AF9E500E7039D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_IDENTITY = "iPhone Distribution: Nextcloud GmbH (NKUJUXUJ3B)"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 4BV6J54P25; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = TalkCallIntents/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = TalkCallIntents; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; + IPHONEOS_DEPLOYMENT_TARGET = 26.5; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@executable_path/../../Frameworks", + ); + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MARKETING_VERSION = 1.0; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = com.2M.Talk.TalkCallIntents; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + STRING_CATALOG_GENERATE_SYMBOLS = YES; + SWIFT_APPROACHABLE_CONCURRENCY = YES; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -3379,6 +3553,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + FEF27994303AF9E500E7039D /* Build configuration list for PBXNativeTarget "TalkCallIntents" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + FEF27995303AF9E500E7039D /* Debug */, + FEF27996303AF9E500E7039D /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; /* End XCConfigurationList section */ /* Begin XCRemoteSwiftPackageReference section */ diff --git a/NextcloudTalk.xcodeproj/xcuserdata/alexandremartinez.xcuserdatad/xcschemes/xcschememanagement.plist b/NextcloudTalk.xcodeproj/xcuserdata/alexandremartinez.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 000000000..02ece61b5 --- /dev/null +++ b/NextcloudTalk.xcodeproj/xcuserdata/alexandremartinez.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,39 @@ + + + + + SchemeUserState + + BroadcastUploadExtension.xcscheme_^#shared#^_ + + orderHint + 14 + + NextcloudTalk.xcscheme_^#shared#^_ + + orderHint + 0 + + NotificationServiceExtension.xcscheme_^#shared#^_ + + orderHint + 13 + + ShareExtension.xcscheme_^#shared#^_ + + orderHint + 15 + + TalkCallIntents.xcscheme_^#shared#^_ + + orderHint + 16 + + TalkIntents.xcscheme_^#shared#^_ + + orderHint + 17 + + + + diff --git a/NextcloudTalk.xcworkspace/xcshareddata/swiftpm/Package.resolved b/NextcloudTalk.xcworkspace/xcshareddata/swiftpm/Package.resolved new file mode 100644 index 000000000..5827b1379 --- /dev/null +++ b/NextcloudTalk.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -0,0 +1,214 @@ +{ + "originHash" : "baab826cff856226ec9c5b17fb7a3d0373f4a176b37042f3c6d4cf55d0056ec4", + "pins" : [ + { + "identity" : "alamofire", + "kind" : "remoteSourceControl", + "location" : "https://github.com/Alamofire/Alamofire", + "state" : { + "revision" : "7595cbcf59809f9977c5f6378500de2ad73b7ddb", + "version" : "5.12.0" + } + }, + { + "identity" : "cdmarkdownkit", + "kind" : "remoteSourceControl", + "location" : "https://github.com/nextcloud-deps/CDMarkdownKit.git", + "state" : { + "revision" : "4b328bc7bbf4a822b56a6b925fb087275cca2ed4" + } + }, + { + "identity" : "cocoalumberjack", + "kind" : "remoteSourceControl", + "location" : "https://github.com/CocoaLumberjack/CocoaLumberjack.git", + "state" : { + "revision" : "c5f2ed4d219866117e135cf648180dc7b66739d3", + "version" : "3.9.1" + } + }, + { + "identity" : "debouncedonchange", + "kind" : "remoteSourceControl", + "location" : "https://github.com/Tunous/DebouncedOnChange", + "state" : { + "revision" : "2583a30a8d277c3475c1b3a10b0f902a7be34f3b", + "version" : "2.1.0" + } + }, + { + "identity" : "dynamic", + "kind" : "remoteSourceControl", + "location" : "https://github.com/mhdhejazi/Dynamic.git", + "state" : { + "revision" : "ab9a2570862d54aed2663691bb767f881226a12f", + "version" : "1.2.0" + } + }, + { + "identity" : "jdstatusbarnotification", + "kind" : "remoteSourceControl", + "location" : "https://github.com/calimarkus/JDStatusBarNotification.git", + "state" : { + "revision" : "0ca1caa82e85595dea6ed8e992412c81fb5da740", + "version" : "2.0.9" + } + }, + { + "identity" : "libphonenumber-ios", + "kind" : "remoteSourceControl", + "location" : "https://github.com/iziz/libPhoneNumber-iOS", + "state" : { + "revision" : "3220b4027117c41f076f1bcc7f3c492ab8957348", + "version" : "1.2.0" + } + }, + { + "identity" : "mbprogresshud", + "kind" : "remoteSourceControl", + "location" : "https://github.com/matej/MBProgressHUD", + "state" : { + "revision" : "bca42b801100b2b3a4eda0ba8dd33d858c780b0d", + "version" : "1.2.0" + } + }, + { + "identity" : "nextcloudkit", + "kind" : "remoteSourceControl", + "location" : "https://github.com/nextcloud/NextcloudKit", + "state" : { + "revision" : "a7b1db0ee1394df9ede303a7430a916c1e283765", + "version" : "2.6.0" + } + }, + { + "identity" : "realm-swift-binary", + "kind" : "remoteSourceControl", + "location" : "https://github.com/nextcloud-deps/realm-swift-binary", + "state" : { + "revision" : "eca2e73265b2abaee75b99bac31b6bd2f02dbdc1" + } + }, + { + "identity" : "sdwebimage", + "kind" : "remoteSourceControl", + "location" : "https://github.com/SDWebImage/SDWebImage.git", + "state" : { + "revision" : "e7d3256c497af9330a0df866ee38f544ddd87c49", + "version" : "5.20.1" + } + }, + { + "identity" : "sdwebimagesvgkitplugin", + "kind" : "remoteSourceControl", + "location" : "https://github.com/nextcloud-deps/SDWebImageSVGKitPlugin.git", + "state" : { + "revision" : "96e726d65e1894fff44df55c6d53e3b9c373ca78" + } + }, + { + "identity" : "svgkit", + "kind" : "remoteSourceControl", + "location" : "https://github.com/SVGKit/SVGKit.git", + "state" : { + "revision" : "596192a28785a31f00ba2e05167317fc98bd6685" + } + }, + { + "identity" : "swift-log", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-log", + "state" : { + "revision" : "3ffafb9722d5d918c614feb496c8789a3b59d222", + "version" : "1.15.0" + } + }, + { + "identity" : "swiftui-introspect", + "kind" : "remoteSourceControl", + "location" : "https://github.com/siteline/swiftui-introspect", + "state" : { + "revision" : "121c146fe591b1320238d054ae35c81ffa45f45a", + "version" : "0.12.0" + } + }, + { + "identity" : "swiftyattributes", + "kind" : "remoteSourceControl", + "location" : "https://github.com/eddiekaiger/SwiftyAttributes.git", + "state" : { + "revision" : "1ae513a1617309455a115c3fc2d558f744b43788" + } + }, + { + "identity" : "swiftygif", + "kind" : "remoteSourceControl", + "location" : "https://github.com/alexiscreuzot/SwiftyGif", + "state" : { + "revision" : "4430cbc148baa3907651d40562d96325426f409a", + "version" : "5.4.5" + } + }, + { + "identity" : "swiftyjson", + "kind" : "remoteSourceControl", + "location" : "https://github.com/SwiftyJSON/SwiftyJSON", + "state" : { + "revision" : "af76cf3ef710b6ca5f8c05f3a31307d44a3c5828", + "version" : "5.0.2" + } + }, + { + "identity" : "swiftyrsa", + "kind" : "remoteSourceControl", + "location" : "https://github.com/nextcloud-deps/SwiftyRSA", + "state" : { + "revision" : "36f9963a83a602bd2ea57ff3ccf600d6284d91e4" + } + }, + { + "identity" : "swiftyxmlparser", + "kind" : "remoteSourceControl", + "location" : "https://github.com/yahoojapan/SwiftyXMLParser", + "state" : { + "revision" : "d7a1d23f04c86c1cd2e8f19247dd15d74e0ea8be", + "version" : "5.6.0" + } + }, + { + "identity" : "talk-clients-webrtc", + "kind" : "remoteSourceControl", + "location" : "https://github.com/nextcloud-releases/talk-clients-webrtc", + "state" : { + "revision" : "904c6624658e65786ac098597e05ef77072cc0d9" + } + }, + { + "identity" : "toast-swift", + "kind" : "remoteSourceControl", + "location" : "https://github.com/scalessec/Toast-Swift", + "state" : { + "revision" : "d780ff8fe55659b4fddf1fbfaf930d967f35d9ea" + } + }, + { + "identity" : "tocropviewcontroller", + "kind" : "remoteSourceControl", + "location" : "https://github.com/TimOliver/TOCropViewController", + "state" : { + "revision" : "4901016b791bf2dab2a660125463e230d7298214", + "version" : "3.0.0" + } + }, + { + "identity" : "uickeychainstore", + "kind" : "remoteSourceControl", + "location" : "https://github.com/kishikawakatsumi/UICKeyChainStore", + "state" : { + "revision" : "8220ac38124613fb709508426f75fbac6921e261", + "version" : "2.2.1" + } + } + ], + "version" : 3 +} diff --git a/NextcloudTalk.xcworkspace/xcuserdata/alexandremartinez.xcuserdatad/IDEFindNavigatorScopes.plist b/NextcloudTalk.xcworkspace/xcuserdata/alexandremartinez.xcuserdatad/IDEFindNavigatorScopes.plist new file mode 100644 index 000000000..5dd5da85f --- /dev/null +++ b/NextcloudTalk.xcworkspace/xcuserdata/alexandremartinez.xcuserdatad/IDEFindNavigatorScopes.plist @@ -0,0 +1,5 @@ + + + + + diff --git a/NextcloudTalk.xcworkspace/xcuserdata/alexandremartinez.xcuserdatad/UserInterfaceState.xcuserstate b/NextcloudTalk.xcworkspace/xcuserdata/alexandremartinez.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..3a0fba9d51a1aa0eafbc95eed2906fe81703df40 GIT binary patch literal 76223 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 literal 0 HcmV?d00001 diff --git a/NextcloudTalk.xcworkspace/xcuserdata/alexandremartinez.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/NextcloudTalk.xcworkspace/xcuserdata/alexandremartinez.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist new file mode 100644 index 000000000..9df26c40a --- /dev/null +++ b/NextcloudTalk.xcworkspace/xcuserdata/alexandremartinez.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -0,0 +1,6 @@ + + + diff --git a/Podfile.lock b/Podfile.lock new file mode 100644 index 000000000..b644feece --- /dev/null +++ b/Podfile.lock @@ -0,0 +1,54 @@ +PODS: + - AFNetworking (3.2.0): + - AFNetworking/NSURLSession (= 3.2.0) + - AFNetworking/Reachability (= 3.2.0) + - AFNetworking/Security (= 3.2.0) + - AFNetworking/Serialization (= 3.2.0) + - AFNetworking/UIKit (= 3.2.0) + - AFNetworking/NSURLSession (3.2.0): + - AFNetworking/Reachability + - AFNetworking/Security + - AFNetworking/Serialization + - AFNetworking/Reachability (3.2.0) + - AFNetworking/Security (3.2.0) + - AFNetworking/Serialization (3.2.0) + - AFNetworking/UIKit (3.2.0): + - AFNetworking/NSURLSession + - MaterialComponents/ActivityIndicator (124.2.0): + - MaterialComponents/Palettes + - MaterialComponents/private/Application + - MDFInternationalization + - MotionAnimator (~> 4.0) + - MaterialComponents/Palettes (124.2.0) + - MaterialComponents/private/Application (124.2.0) + - MDFInternationalization (3.0.0) + - MobileVLCKit (3.5.1) + - MotionAnimator (4.0.1): + - MotionInterchange (~> 3.0) + - MotionInterchange (3.0.0) + +DEPENDENCIES: + - AFNetworking (= 3.2.0) + - MaterialComponents/ActivityIndicator + - MobileVLCKit (~> 3.5.0) + +SPEC REPOS: + trunk: + - AFNetworking + - MaterialComponents + - MDFInternationalization + - MobileVLCKit + - MotionAnimator + - MotionInterchange + +SPEC CHECKSUMS: + AFNetworking: 2287d2a061a9695bdfe6ea82f484e56d76ee2631 + MaterialComponents: 1a9b2d9d45b1601ae544de85089adc4c464306d4 + MDFInternationalization: d697c55307816222a55685c4ccb1044ffb030c12 + MobileVLCKit: 144d5f565512d1147d63b0fa1379231b3fd66535 + MotionAnimator: 5f99d7c9592928c0f28a66283eda9c3b657dc480 + MotionInterchange: 13adae439b377e31d1674cc165539d50e1d1566a + +PODFILE CHECKSUM: 307b726ad9bd9b71a9b40ef82e528d1449bc16b9 + +COCOAPODS: 1.17.0 From 7053ba047afbbfdf3725158e6a2465f4ffdae827 Mon Sep 17 00:00:00 2001 From: alexm8002 Date: Sun, 30 Aug 2026 10:47:52 +0200 Subject: [PATCH 09/25] Remove unnecessary blank lines in IntentHandler.swift Signed-off-by: alexm8002 --- TalkCallIntents/IntentHandler.swift | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/TalkCallIntents/IntentHandler.swift b/TalkCallIntents/IntentHandler.swift index cfe41e61a..5838a10f0 100644 --- a/TalkCallIntents/IntentHandler.swift +++ b/TalkCallIntents/IntentHandler.swift @@ -24,7 +24,6 @@ final class IntentHandler: INExtension { } } - // MARK: - Start Call final class StartCallIntentHandler: NSObject, INStartCallIntentHandling { @@ -40,7 +39,6 @@ final class StartCallIntentHandler: NSObject, INStartCallIntentHandling { static let activityCallRecordIdentifierKey = "callRecordIdentifier" } - // MARK: - Resolve call capability func resolveCallCapability( @@ -64,7 +62,6 @@ final class StartCallIntentHandler: NSObject, INStartCallIntentHandling { } } - // MARK: - Resolve destination func resolveDestinationType( @@ -94,7 +91,6 @@ final class StartCallIntentHandler: NSObject, INStartCallIntentHandling { } } - // MARK: - Resolve contacts func resolveContacts( @@ -115,7 +111,6 @@ final class StartCallIntentHandler: NSObject, INStartCallIntentHandling { completion(results) } - // MARK: - Resolve call-back record func resolveCallRecordToCallBack( @@ -135,7 +130,6 @@ final class StartCallIntentHandler: NSObject, INStartCallIntentHandling { completion(.success(with: callRecord)) } - // MARK: - Confirm func confirm( @@ -164,7 +158,6 @@ final class StartCallIntentHandler: NSObject, INStartCallIntentHandling { ) } - // MARK: - Handle func handle( @@ -195,7 +188,6 @@ final class StartCallIntentHandler: NSObject, INStartCallIntentHandling { ) } - // MARK: - User activity private func makeUserActivity( @@ -238,7 +230,6 @@ final class StartCallIntentHandler: NSObject, INStartCallIntentHandling { return activity } - // MARK: - Serialisation private static func serialisePerson( @@ -277,7 +268,6 @@ final class StartCallIntentHandler: NSObject, INStartCallIntentHandling { return result.isEmpty ? nil : result } - private static func serialisePersonHandleType( _ type: INPersonHandleType ) -> String { @@ -298,7 +288,6 @@ final class StartCallIntentHandler: NSObject, INStartCallIntentHandling { } } - private func serialiseCallCapability( _ capability: INCallCapability ) -> String { @@ -319,7 +308,6 @@ final class StartCallIntentHandler: NSObject, INStartCallIntentHandling { } } - private func serialiseDestinationType( _ destination: INCallDestinationType ) -> String { From f807dfc46a912bf52d1f497d44c137fe8a293701 Mon Sep 17 00:00:00 2001 From: alexm8002 Date: Mon, 31 Aug 2026 07:49:05 +0200 Subject: [PATCH 10/25] Clean up license comments in IntentHandler.swift Removed duplicate SPDX license comment and added copyright notice. Signed-off-by: alexm8002 --- TalkCallIntents/IntentHandler.swift | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/TalkCallIntents/IntentHandler.swift b/TalkCallIntents/IntentHandler.swift index 5838a10f0..bc782acf7 100644 --- a/TalkCallIntents/IntentHandler.swift +++ b/TalkCallIntents/IntentHandler.swift @@ -1,8 +1,6 @@ // -// IntentHandler.swift -// TalkCallIntents -// -// SPDX-License-Identifier: GPL-3.0-or-later +// SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors +// SPDX-License-Identifier: GPL-3.0-or-later // import Foundation From 6f6d6559bca616f52747e20d832e50b544e31709 Mon Sep 17 00:00:00 2001 From: alexm8002 Date: Mon, 31 Aug 2026 07:51:43 +0200 Subject: [PATCH 11/25] Clean up comments in IntentHandler.swift Remove unnecessary comments about callRecord parameter. Signed-off-by: alexm8002 --- TalkCallIntents/IntentHandler.swift | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/TalkCallIntents/IntentHandler.swift b/TalkCallIntents/IntentHandler.swift index bc782acf7..e683a2494 100644 --- a/TalkCallIntents/IntentHandler.swift +++ b/TalkCallIntents/IntentHandler.swift @@ -117,9 +117,7 @@ final class StartCallIntentHandler: NSObject, INStartCallIntentHandling { ) { guard let callRecord = intent.callRecordToCallBack else { /* - * Ce paramètre n'est utile que pour un rappel. - * - * Une demande normale "appelle Paul avec Talk" n'en a pas besoin. + * This parameter for callbacks. A regular call with Siri "Call Paul with Talk" does not use it */ completion(.notRequired()) return From 8e152452a3ffa03718de59396049335fe7704953 Mon Sep 17 00:00:00 2001 From: alexm8002 Date: Mon, 31 Aug 2026 07:58:45 +0200 Subject: [PATCH 12/25] Update DEVELOPMENT_TEAM and PRODUCT_BUNDLE_IDENTIFIER Signed-off-by: alexm8002 --- NextcloudTalk.xcodeproj/project.pbxproj | 64 ++++++++++++------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/NextcloudTalk.xcodeproj/project.pbxproj b/NextcloudTalk.xcodeproj/project.pbxproj index eac04b074..faecd7632 100644 --- a/NextcloudTalk.xcodeproj/project.pbxproj +++ b/NextcloudTalk.xcodeproj/project.pbxproj @@ -2569,7 +2569,7 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = 4BV6J54P25; + DEVELOPMENT_TEAM = NKUJUXUJ3B; ENABLE_USER_SCRIPT_SANDBOXING = NO; GCC_C_LANGUAGE_STANDARD = gnu17; GENERATE_INFOPLIST_FILE = YES; @@ -2588,7 +2588,7 @@ MARKETING_VERSION = 1.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = com.2M.Talk.NextcloudTalkTests; + PRODUCT_BUNDLE_IDENTIFIER = com.nextcloud.Talk.NextcloudTalkTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; SWIFT_EMIT_LOC_STRINGS = NO; @@ -2613,7 +2613,7 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = 4BV6J54P25; + DEVELOPMENT_TEAM = NKUJUXUJ3B; ENABLE_USER_SCRIPT_SANDBOXING = NO; GCC_C_LANGUAGE_STANDARD = gnu17; GENERATE_INFOPLIST_FILE = YES; @@ -2631,7 +2631,7 @@ LOCALIZATION_PREFERS_STRING_CATALOGS = YES; MARKETING_VERSION = 1.0; MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = com.2M.Talk.NextcloudTalkTests; + PRODUCT_BUNDLE_IDENTIFIER = com.nextcloud.Talk.NextcloudTalkTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_EMIT_LOC_STRINGS = NO; SWIFT_OBJC_BRIDGING_HEADER = "NextcloudTalk/NextcloudTalk-Bridging-Header.h"; @@ -2654,7 +2654,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 2; - DEVELOPMENT_TEAM = 4BV6J54P25; + DEVELOPMENT_TEAM = NKUJUXUJ3B; ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu17; GENERATE_INFOPLIST_FILE = YES; @@ -2671,7 +2671,7 @@ MARKETING_VERSION = 25.0.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = com.2M.Talk.TalkIntents; + PRODUCT_BUNDLE_IDENTIFIER = com.nextcloud.Talk.TalkIntents; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; @@ -2697,7 +2697,7 @@ CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 2; - DEVELOPMENT_TEAM = 4BV6J54P25; + DEVELOPMENT_TEAM = NKUJUXUJ3B; ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu17; GENERATE_INFOPLIST_FILE = YES; @@ -2713,7 +2713,7 @@ LOCALIZATION_PREFERS_STRING_CATALOGS = YES; MARKETING_VERSION = 25.0.0; MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = com.2M.Talk.TalkIntents; + PRODUCT_BUNDLE_IDENTIFIER = com.nextcloud.Talk.TalkIntents; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; @@ -2734,14 +2734,14 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = 4BV6J54P25; + DEVELOPMENT_TEAM = NKUJUXUJ3B; GCC_C_LANGUAGE_STANDARD = gnu11; GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 16.0; MARKETING_VERSION = 1.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = com.2M.Talk.NextcloudTalkUITests; + PRODUCT_BUNDLE_IDENTIFIER = com.nextcloud.Talk.NextcloudTalkUITests; PRODUCT_NAME = "$(TARGET_NAME)"; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTS_MACCATALYST = NO; @@ -2763,13 +2763,13 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = 4BV6J54P25; + DEVELOPMENT_TEAM = NKUJUXUJ3B; GCC_C_LANGUAGE_STANDARD = gnu11; GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 16.0; MARKETING_VERSION = 1.0; MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = com.2M.Talk.NextcloudTalkUITests; + PRODUCT_BUNDLE_IDENTIFIER = com.nextcloud.Talk.NextcloudTalkUITests; PRODUCT_NAME = "$(TARGET_NAME)"; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTS_MACCATALYST = NO; @@ -2794,7 +2794,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 2; - DEVELOPMENT_TEAM = 4BV6J54P25; + DEVELOPMENT_TEAM = NKUJUXUJ3B; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", @@ -2814,7 +2814,7 @@ MARKETING_VERSION = 25.0.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = com.2M.Talk.BroadcastUploadExtension; + PRODUCT_BUNDLE_IDENTIFIER = com.nextcloud.Talk.BroadcastUploadExtension; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = APP_EXTENSION; @@ -2839,7 +2839,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 2; - DEVELOPMENT_TEAM = 4BV6J54P25; + DEVELOPMENT_TEAM = NKUJUXUJ3B; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_PREPROCESSOR_DEFINITIONS = ( "$(inherited)", @@ -2858,7 +2858,7 @@ ); MARKETING_VERSION = 25.0.0; MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = com.2M.Talk.BroadcastUploadExtension; + PRODUCT_BUNDLE_IDENTIFIER = com.nextcloud.Talk.BroadcastUploadExtension; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = APP_EXTENSION; @@ -2999,7 +2999,7 @@ CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 2; DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = 4BV6J54P25; + DEVELOPMENT_TEAM = NKUJUXUJ3B; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; GCC_SYMBOLS_PRIVATE_EXTERN = NO; @@ -3021,7 +3021,7 @@ ); LIBRARY_SEARCH_PATHS = "$(inherited)"; MARKETING_VERSION = 25.0.0; - PRODUCT_BUNDLE_IDENTIFIER = com.2M.Talk; + PRODUCT_BUNDLE_IDENTIFIER = com.nextcloud.Talk; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OBJC_BRIDGING_HEADER = "NextcloudTalk/NextcloudTalk-Bridging-Header.h"; @@ -3044,7 +3044,7 @@ CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 2; DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = 4BV6J54P25; + DEVELOPMENT_TEAM = NKUJUXUJ3B; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; GCC_SYMBOLS_PRIVATE_EXTERN = NO; @@ -3066,7 +3066,7 @@ ); LIBRARY_SEARCH_PATHS = "$(inherited)"; MARKETING_VERSION = 25.0.0; - PRODUCT_BUNDLE_IDENTIFIER = com.2M.Talk; + PRODUCT_BUNDLE_IDENTIFIER = com.nextcloud.Talk; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OBJC_BRIDGING_HEADER = "NextcloudTalk/NextcloudTalk-Bridging-Header.h"; @@ -3098,7 +3098,7 @@ CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 2; DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = 4BV6J54P25; + DEVELOPMENT_TEAM = NKUJUXUJ3B; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -3153,7 +3153,7 @@ MARKETING_VERSION = 25.0.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = com.2M.Talk.ShareExtension; + PRODUCT_BUNDLE_IDENTIFIER = com.nextcloud.Talk.ShareExtension; PRODUCT_NAME = ShareExtension; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = APP_EXTENSION; @@ -3189,7 +3189,7 @@ CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 2; DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = 4BV6J54P25; + DEVELOPMENT_TEAM = NKUJUXUJ3B; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -3243,7 +3243,7 @@ ); MARKETING_VERSION = 25.0.0; MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = com.2M.Talk.ShareExtension; + PRODUCT_BUNDLE_IDENTIFIER = com.nextcloud.Talk.ShareExtension; PRODUCT_NAME = ShareExtension; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = APP_EXTENSION; @@ -3277,7 +3277,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 2; - DEVELOPMENT_TEAM = 4BV6J54P25; + DEVELOPMENT_TEAM = NKUJUXUJ3B; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -3315,7 +3315,7 @@ MARKETING_VERSION = 25.0.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = com.2M.Talk.NotificationServiceExtension; + PRODUCT_BUNDLE_IDENTIFIER = com.nextcloud.Talk.NotificationServiceExtension; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = APP_EXTENSION; @@ -3349,7 +3349,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 2; - DEVELOPMENT_TEAM = 4BV6J54P25; + DEVELOPMENT_TEAM = NKUJUXUJ3B; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -3386,7 +3386,7 @@ LIBRARY_SEARCH_PATHS = "$(inherited)"; MARKETING_VERSION = 25.0.0; MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = com.2M.Talk.NotificationServiceExtension; + PRODUCT_BUNDLE_IDENTIFIER = com.nextcloud.Talk.NotificationServiceExtension; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = APP_EXTENSION; @@ -3408,7 +3408,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = 4BV6J54P25; + DEVELOPMENT_TEAM = NKUJUXUJ3B; ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu17; GENERATE_INFOPLIST_FILE = YES; @@ -3425,7 +3425,7 @@ MARKETING_VERSION = 1.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = com.2M.Talk.TalkCallIntents; + PRODUCT_BUNDLE_IDENTIFIER = com.nextcloud.Talk.TalkCallIntents; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; STRING_CATALOG_GENERATE_SYMBOLS = YES; @@ -3450,7 +3450,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = 4BV6J54P25; + DEVELOPMENT_TEAM = NKUJUXUJ3B; ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu17; GENERATE_INFOPLIST_FILE = YES; @@ -3466,7 +3466,7 @@ LOCALIZATION_PREFERS_STRING_CATALOGS = YES; MARKETING_VERSION = 1.0; MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = com.2M.Talk.TalkCallIntents; + PRODUCT_BUNDLE_IDENTIFIER = com.nextcloud.Talk.TalkCallIntents; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; STRING_CATALOG_GENERATE_SYMBOLS = YES; From 3cd26765d965bc9979a8127196c0d66ab1e001c5 Mon Sep 17 00:00:00 2001 From: alexm8002 Date: Mon, 31 Aug 2026 08:15:55 +0200 Subject: [PATCH 13/25] Remove Untitled.swift from project configuration Signed-off-by: alexm8002 --- NextcloudTalk.xcodeproj/project.pbxproj | 2 -- 1 file changed, 2 deletions(-) diff --git a/NextcloudTalk.xcodeproj/project.pbxproj b/NextcloudTalk.xcodeproj/project.pbxproj index faecd7632..635ecc03a 100644 --- a/NextcloudTalk.xcodeproj/project.pbxproj +++ b/NextcloudTalk.xcodeproj/project.pbxproj @@ -474,7 +474,6 @@ B7874918820589BF8FD69BED /* Pods-NextcloudTalkTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NextcloudTalkTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-NextcloudTalkTests/Pods-NextcloudTalkTests.release.xcconfig"; sourceTree = ""; }; D6DF51D976DC0F681FF83F7B /* Pods-NotificationServiceExtension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NotificationServiceExtension.debug.xcconfig"; path = "Pods/Target Support Files/Pods-NotificationServiceExtension/Pods-NotificationServiceExtension.debug.xcconfig"; sourceTree = ""; }; D86091EC1125C3057B9A299B /* Pods-NotificationServiceExtension.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NotificationServiceExtension.release.xcconfig"; path = "Pods/Target Support Files/Pods-NotificationServiceExtension/Pods-NotificationServiceExtension.release.xcconfig"; sourceTree = ""; }; - FEF279863039F30600E7039D /* Untitled.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Untitled.swift; sourceTree = ""; }; FEF2798B303AF9E500E7039D /* TalkCallIntents.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = TalkCallIntents.appex; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ @@ -1400,7 +1399,6 @@ 2C05747F1EDD9E8E00D9E7F2 /* NextcloudTalk */ = { isa = PBXGroup; children = ( - FEF279863039F30600E7039D /* Untitled.swift */, FEF26F573039D9C400E7039D /* Carplay */, 1F9629252E8E6A2100EC9BEE /* Calls */, 1F9629262E8E6A6800EC9BEE /* Chat */, From b26429deb289cf5194585068c5c178d2514d3cb6 Mon Sep 17 00:00:00 2001 From: alexm8002 Date: Mon, 31 Aug 2026 08:26:08 +0200 Subject: [PATCH 14/25] Clean up Headers in CarPlaySceneDelegate.swift Removed unnecessary comments and header information. Signed-off-by: alexm8002 --- NextcloudTalk/Carplay/CarPlaySceneDelegate.swift | 7 ------- 1 file changed, 7 deletions(-) diff --git a/NextcloudTalk/Carplay/CarPlaySceneDelegate.swift b/NextcloudTalk/Carplay/CarPlaySceneDelegate.swift index e5252e5f6..a5790ea7e 100644 --- a/NextcloudTalk/Carplay/CarPlaySceneDelegate.swift +++ b/NextcloudTalk/Carplay/CarPlaySceneDelegate.swift @@ -1,10 +1,3 @@ -// -// CarPlaySceneDelegate.swift -// NextcloudTalk -// -// Created by Alexandre Martinez on 22/08/2026. -// - // // SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors // SPDX-License-Identifier: GPL-3.0-or-later From c6b21f10305950d84b25a9f54db9f9f262488461 Mon Sep 17 00:00:00 2001 From: alexm8002 Date: Mon, 31 Aug 2026 08:26:49 +0200 Subject: [PATCH 15/25] Clean up headers in CarPlayConversationProvider.swift Removed unnecessary comments and header from CarPlayConversationProvider.swift Signed-off-by: alexm8002 --- NextcloudTalk/Carplay/CarPlayConversationProvider.swift | 7 ------- 1 file changed, 7 deletions(-) diff --git a/NextcloudTalk/Carplay/CarPlayConversationProvider.swift b/NextcloudTalk/Carplay/CarPlayConversationProvider.swift index 2a5ce25b6..8840da76f 100644 --- a/NextcloudTalk/Carplay/CarPlayConversationProvider.swift +++ b/NextcloudTalk/Carplay/CarPlayConversationProvider.swift @@ -1,10 +1,3 @@ -// -// CarPlayConversationProvider.swift -// NextcloudTalk -// -// Created by Alexandre Martinez on 22/08/2026. -// - // // SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors // SPDX-License-Identifier: GPL-3.0-or-later From c4e553d929f003a412b2a64492145f6dd0a2a35c Mon Sep 17 00:00:00 2001 From: alexm8002 Date: Mon, 31 Aug 2026 08:37:08 +0200 Subject: [PATCH 16/25] Update IntentHandler.swift Header Signed-off-by: alexm8002 From 08ff41f444ff8ffecb4e4bd6e78750d13e73a7ee Mon Sep 17 00:00:00 2001 From: alexm8002 Date: Mon, 31 Aug 2026 08:45:07 +0200 Subject: [PATCH 17/25] Delete Podfile.lock Signed-off-by: alexm8002 --- Podfile.lock | 54 ---------------------------------------------------- 1 file changed, 54 deletions(-) delete mode 100644 Podfile.lock diff --git a/Podfile.lock b/Podfile.lock deleted file mode 100644 index b644feece..000000000 --- a/Podfile.lock +++ /dev/null @@ -1,54 +0,0 @@ -PODS: - - AFNetworking (3.2.0): - - AFNetworking/NSURLSession (= 3.2.0) - - AFNetworking/Reachability (= 3.2.0) - - AFNetworking/Security (= 3.2.0) - - AFNetworking/Serialization (= 3.2.0) - - AFNetworking/UIKit (= 3.2.0) - - AFNetworking/NSURLSession (3.2.0): - - AFNetworking/Reachability - - AFNetworking/Security - - AFNetworking/Serialization - - AFNetworking/Reachability (3.2.0) - - AFNetworking/Security (3.2.0) - - AFNetworking/Serialization (3.2.0) - - AFNetworking/UIKit (3.2.0): - - AFNetworking/NSURLSession - - MaterialComponents/ActivityIndicator (124.2.0): - - MaterialComponents/Palettes - - MaterialComponents/private/Application - - MDFInternationalization - - MotionAnimator (~> 4.0) - - MaterialComponents/Palettes (124.2.0) - - MaterialComponents/private/Application (124.2.0) - - MDFInternationalization (3.0.0) - - MobileVLCKit (3.5.1) - - MotionAnimator (4.0.1): - - MotionInterchange (~> 3.0) - - MotionInterchange (3.0.0) - -DEPENDENCIES: - - AFNetworking (= 3.2.0) - - MaterialComponents/ActivityIndicator - - MobileVLCKit (~> 3.5.0) - -SPEC REPOS: - trunk: - - AFNetworking - - MaterialComponents - - MDFInternationalization - - MobileVLCKit - - MotionAnimator - - MotionInterchange - -SPEC CHECKSUMS: - AFNetworking: 2287d2a061a9695bdfe6ea82f484e56d76ee2631 - MaterialComponents: 1a9b2d9d45b1601ae544de85089adc4c464306d4 - MDFInternationalization: d697c55307816222a55685c4ccb1044ffb030c12 - MobileVLCKit: 144d5f565512d1147d63b0fa1379231b3fd66535 - MotionAnimator: 5f99d7c9592928c0f28a66283eda9c3b657dc480 - MotionInterchange: 13adae439b377e31d1674cc165539d50e1d1566a - -PODFILE CHECKSUM: 307b726ad9bd9b71a9b40ef82e528d1449bc16b9 - -COCOAPODS: 1.17.0 From 13e013c7a8d93b24433d82a694d893fc9864b712 Mon Sep 17 00:00:00 2001 From: alexm8002 Date: Mon, 31 Aug 2026 08:45:32 +0200 Subject: [PATCH 18/25] Delete NextcloudTalk.xcworkspace/xcuserdata/alexandremartinez.xcuserdatad/UserInterfaceState.xcuserstate Signed-off-by: alexm8002 --- .../UserInterfaceState.xcuserstate | Bin 76223 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 NextcloudTalk.xcworkspace/xcuserdata/alexandremartinez.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/NextcloudTalk.xcworkspace/xcuserdata/alexandremartinez.xcuserdatad/UserInterfaceState.xcuserstate b/NextcloudTalk.xcworkspace/xcuserdata/alexandremartinez.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index 3a0fba9d51a1aa0eafbc95eed2906fe81703df40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76223 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 From f5792a7d156bfdac37376d8ee8bd504062698e15 Mon Sep 17 00:00:00 2001 From: alexm8002 Date: Mon, 31 Aug 2026 08:46:30 +0200 Subject: [PATCH 19/25] Delete NextcloudTalk.xcworkspace/xcuserdata/alexandremartinez.xcuserdatad/IDEFindNavigatorScopes.plist Signed-off-by: alexm8002 --- .../IDEFindNavigatorScopes.plist | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 NextcloudTalk.xcworkspace/xcuserdata/alexandremartinez.xcuserdatad/IDEFindNavigatorScopes.plist diff --git a/NextcloudTalk.xcworkspace/xcuserdata/alexandremartinez.xcuserdatad/IDEFindNavigatorScopes.plist b/NextcloudTalk.xcworkspace/xcuserdata/alexandremartinez.xcuserdatad/IDEFindNavigatorScopes.plist deleted file mode 100644 index 5dd5da85f..000000000 --- a/NextcloudTalk.xcworkspace/xcuserdata/alexandremartinez.xcuserdatad/IDEFindNavigatorScopes.plist +++ /dev/null @@ -1,5 +0,0 @@ - - - - - From a7ba0aa92121b7514d3deb079592515be44855c1 Mon Sep 17 00:00:00 2001 From: alexm8002 Date: Mon, 31 Aug 2026 08:47:01 +0200 Subject: [PATCH 20/25] Delete NextcloudTalk.xcodeproj/xcuserdata/alexandremartinez.xcuserdatad/xcschemes/xcschememanagement.plist Signed-off-by: alexm8002 --- .../xcschemes/xcschememanagement.plist | 39 ------------------- 1 file changed, 39 deletions(-) delete mode 100644 NextcloudTalk.xcodeproj/xcuserdata/alexandremartinez.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/NextcloudTalk.xcodeproj/xcuserdata/alexandremartinez.xcuserdatad/xcschemes/xcschememanagement.plist b/NextcloudTalk.xcodeproj/xcuserdata/alexandremartinez.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index 02ece61b5..000000000 --- a/NextcloudTalk.xcodeproj/xcuserdata/alexandremartinez.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,39 +0,0 @@ - - - - - SchemeUserState - - BroadcastUploadExtension.xcscheme_^#shared#^_ - - orderHint - 14 - - NextcloudTalk.xcscheme_^#shared#^_ - - orderHint - 0 - - NotificationServiceExtension.xcscheme_^#shared#^_ - - orderHint - 13 - - ShareExtension.xcscheme_^#shared#^_ - - orderHint - 15 - - TalkCallIntents.xcscheme_^#shared#^_ - - orderHint - 16 - - TalkIntents.xcscheme_^#shared#^_ - - orderHint - 17 - - - - From 59fce397881234ecf2a8d48a0045627bb4ad7d34 Mon Sep 17 00:00:00 2001 From: alexm8002 Date: Mon, 31 Aug 2026 08:47:23 +0200 Subject: [PATCH 21/25] Delete NextcloudTalk.xcworkspace/xcshareddata/swiftpm/Package.resolved Signed-off-by: alexm8002 --- .../xcshareddata/swiftpm/Package.resolved | 214 ------------------ 1 file changed, 214 deletions(-) delete mode 100644 NextcloudTalk.xcworkspace/xcshareddata/swiftpm/Package.resolved diff --git a/NextcloudTalk.xcworkspace/xcshareddata/swiftpm/Package.resolved b/NextcloudTalk.xcworkspace/xcshareddata/swiftpm/Package.resolved deleted file mode 100644 index 5827b1379..000000000 --- a/NextcloudTalk.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ /dev/null @@ -1,214 +0,0 @@ -{ - "originHash" : "baab826cff856226ec9c5b17fb7a3d0373f4a176b37042f3c6d4cf55d0056ec4", - "pins" : [ - { - "identity" : "alamofire", - "kind" : "remoteSourceControl", - "location" : "https://github.com/Alamofire/Alamofire", - "state" : { - "revision" : "7595cbcf59809f9977c5f6378500de2ad73b7ddb", - "version" : "5.12.0" - } - }, - { - "identity" : "cdmarkdownkit", - "kind" : "remoteSourceControl", - "location" : "https://github.com/nextcloud-deps/CDMarkdownKit.git", - "state" : { - "revision" : "4b328bc7bbf4a822b56a6b925fb087275cca2ed4" - } - }, - { - "identity" : "cocoalumberjack", - "kind" : "remoteSourceControl", - "location" : "https://github.com/CocoaLumberjack/CocoaLumberjack.git", - "state" : { - "revision" : "c5f2ed4d219866117e135cf648180dc7b66739d3", - "version" : "3.9.1" - } - }, - { - "identity" : "debouncedonchange", - "kind" : "remoteSourceControl", - "location" : "https://github.com/Tunous/DebouncedOnChange", - "state" : { - "revision" : "2583a30a8d277c3475c1b3a10b0f902a7be34f3b", - "version" : "2.1.0" - } - }, - { - "identity" : "dynamic", - "kind" : "remoteSourceControl", - "location" : "https://github.com/mhdhejazi/Dynamic.git", - "state" : { - "revision" : "ab9a2570862d54aed2663691bb767f881226a12f", - "version" : "1.2.0" - } - }, - { - "identity" : "jdstatusbarnotification", - "kind" : "remoteSourceControl", - "location" : "https://github.com/calimarkus/JDStatusBarNotification.git", - "state" : { - "revision" : "0ca1caa82e85595dea6ed8e992412c81fb5da740", - "version" : "2.0.9" - } - }, - { - "identity" : "libphonenumber-ios", - "kind" : "remoteSourceControl", - "location" : "https://github.com/iziz/libPhoneNumber-iOS", - "state" : { - "revision" : "3220b4027117c41f076f1bcc7f3c492ab8957348", - "version" : "1.2.0" - } - }, - { - "identity" : "mbprogresshud", - "kind" : "remoteSourceControl", - "location" : "https://github.com/matej/MBProgressHUD", - "state" : { - "revision" : "bca42b801100b2b3a4eda0ba8dd33d858c780b0d", - "version" : "1.2.0" - } - }, - { - "identity" : "nextcloudkit", - "kind" : "remoteSourceControl", - "location" : "https://github.com/nextcloud/NextcloudKit", - "state" : { - "revision" : "a7b1db0ee1394df9ede303a7430a916c1e283765", - "version" : "2.6.0" - } - }, - { - "identity" : "realm-swift-binary", - "kind" : "remoteSourceControl", - "location" : "https://github.com/nextcloud-deps/realm-swift-binary", - "state" : { - "revision" : "eca2e73265b2abaee75b99bac31b6bd2f02dbdc1" - } - }, - { - "identity" : "sdwebimage", - "kind" : "remoteSourceControl", - "location" : "https://github.com/SDWebImage/SDWebImage.git", - "state" : { - "revision" : "e7d3256c497af9330a0df866ee38f544ddd87c49", - "version" : "5.20.1" - } - }, - { - "identity" : "sdwebimagesvgkitplugin", - "kind" : "remoteSourceControl", - "location" : "https://github.com/nextcloud-deps/SDWebImageSVGKitPlugin.git", - "state" : { - "revision" : "96e726d65e1894fff44df55c6d53e3b9c373ca78" - } - }, - { - "identity" : "svgkit", - "kind" : "remoteSourceControl", - "location" : "https://github.com/SVGKit/SVGKit.git", - "state" : { - "revision" : "596192a28785a31f00ba2e05167317fc98bd6685" - } - }, - { - "identity" : "swift-log", - "kind" : "remoteSourceControl", - "location" : "https://github.com/apple/swift-log", - "state" : { - "revision" : "3ffafb9722d5d918c614feb496c8789a3b59d222", - "version" : "1.15.0" - } - }, - { - "identity" : "swiftui-introspect", - "kind" : "remoteSourceControl", - "location" : "https://github.com/siteline/swiftui-introspect", - "state" : { - "revision" : "121c146fe591b1320238d054ae35c81ffa45f45a", - "version" : "0.12.0" - } - }, - { - "identity" : "swiftyattributes", - "kind" : "remoteSourceControl", - "location" : "https://github.com/eddiekaiger/SwiftyAttributes.git", - "state" : { - "revision" : "1ae513a1617309455a115c3fc2d558f744b43788" - } - }, - { - "identity" : "swiftygif", - "kind" : "remoteSourceControl", - "location" : "https://github.com/alexiscreuzot/SwiftyGif", - "state" : { - "revision" : "4430cbc148baa3907651d40562d96325426f409a", - "version" : "5.4.5" - } - }, - { - "identity" : "swiftyjson", - "kind" : "remoteSourceControl", - "location" : "https://github.com/SwiftyJSON/SwiftyJSON", - "state" : { - "revision" : "af76cf3ef710b6ca5f8c05f3a31307d44a3c5828", - "version" : "5.0.2" - } - }, - { - "identity" : "swiftyrsa", - "kind" : "remoteSourceControl", - "location" : "https://github.com/nextcloud-deps/SwiftyRSA", - "state" : { - "revision" : "36f9963a83a602bd2ea57ff3ccf600d6284d91e4" - } - }, - { - "identity" : "swiftyxmlparser", - "kind" : "remoteSourceControl", - "location" : "https://github.com/yahoojapan/SwiftyXMLParser", - "state" : { - "revision" : "d7a1d23f04c86c1cd2e8f19247dd15d74e0ea8be", - "version" : "5.6.0" - } - }, - { - "identity" : "talk-clients-webrtc", - "kind" : "remoteSourceControl", - "location" : "https://github.com/nextcloud-releases/talk-clients-webrtc", - "state" : { - "revision" : "904c6624658e65786ac098597e05ef77072cc0d9" - } - }, - { - "identity" : "toast-swift", - "kind" : "remoteSourceControl", - "location" : "https://github.com/scalessec/Toast-Swift", - "state" : { - "revision" : "d780ff8fe55659b4fddf1fbfaf930d967f35d9ea" - } - }, - { - "identity" : "tocropviewcontroller", - "kind" : "remoteSourceControl", - "location" : "https://github.com/TimOliver/TOCropViewController", - "state" : { - "revision" : "4901016b791bf2dab2a660125463e230d7298214", - "version" : "3.0.0" - } - }, - { - "identity" : "uickeychainstore", - "kind" : "remoteSourceControl", - "location" : "https://github.com/kishikawakatsumi/UICKeyChainStore", - "state" : { - "revision" : "8220ac38124613fb709508426f75fbac6921e261", - "version" : "2.2.1" - } - } - ], - "version" : 3 -} From 6c19909e2a0d81199b8efa7c37e0e547224299b8 Mon Sep 17 00:00:00 2001 From: alexm8002 Date: Mon, 31 Aug 2026 08:48:19 +0200 Subject: [PATCH 22/25] Delete NextcloudTalk.xcworkspace/xcuserdata/alexandremartinez.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist Signed-off-by: alexm8002 --- .../xcdebugger/Breakpoints_v2.xcbkptlist | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 NextcloudTalk.xcworkspace/xcuserdata/alexandremartinez.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist diff --git a/NextcloudTalk.xcworkspace/xcuserdata/alexandremartinez.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/NextcloudTalk.xcworkspace/xcuserdata/alexandremartinez.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist deleted file mode 100644 index 9df26c40a..000000000 --- a/NextcloudTalk.xcworkspace/xcuserdata/alexandremartinez.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ /dev/null @@ -1,6 +0,0 @@ - - - From 680a3bb27574ab649fba2a79339bc71eddbc976f Mon Sep 17 00:00:00 2001 From: alexm8002 Date: Mon, 31 Aug 2026 13:42:27 +0200 Subject: [PATCH 23/25] Refactor call capability and destination type handling Signed-off-by: alexm8002 --- TalkCallIntents/IntentHandler.swift | 8 -------- 1 file changed, 8 deletions(-) diff --git a/TalkCallIntents/IntentHandler.swift b/TalkCallIntents/IntentHandler.swift index e683a2494..e18083c94 100644 --- a/TalkCallIntents/IntentHandler.swift +++ b/TalkCallIntents/IntentHandler.swift @@ -30,7 +30,6 @@ final class StartCallIntentHandler: NSObject, INStartCallIntentHandling { private enum Constants { static let userActivityType = "com.nextcloud.Talk.startCall" - static let activityContactsKey = "contacts" static let activityCallCapabilityKey = "callCapability" static let activityDestinationTypeKey = "destinationType" @@ -45,7 +44,6 @@ final class StartCallIntentHandler: NSObject, INStartCallIntentHandling { ) { switch intent.callCapability { - case .audioCall: completion(.success(with: .audioCall)) @@ -68,22 +66,16 @@ final class StartCallIntentHandler: NSObject, INStartCallIntentHandling { ) { switch intent.destinationType { - case .normal: completion(.success(with: .normal)) - case .emergency: completion(.unsupported()) - case .voicemail: completion(.unsupported()) - case .redial: completion(.success(with: .redial)) - case .unknown: completion(.success(with: .normal)) - @unknown default: completion(.unsupported()) } From 9fb08125c6def54ab586b656690ce1ee18154695 Mon Sep 17 00:00:00 2001 From: alexm8002 Date: Mon, 31 Aug 2026 13:44:24 +0200 Subject: [PATCH 24/25] Update headers IntentHandler.swift Signed-off-by: alexm8002 From 3b4ba4315e1165133c90b383f46b111d5a70da5d Mon Sep 17 00:00:00 2001 From: alexm8002 Date: Mon, 31 Aug 2026 13:45:50 +0200 Subject: [PATCH 25/25] Update CarPlayConversationProvider.swift Signed-off-by: alexm8002