From 44b87a74fbf360316c35630a540dd397e27f2da1 Mon Sep 17 00:00:00 2001 From: Marino Faggiana Date: Tue, 12 May 2026 08:37:04 +0200 Subject: [PATCH 01/22] cod Signed-off-by: Marino Faggiana --- Brand/Share.plist | 5 +- Nextcloud.xcodeproj/project.pbxproj | 14 ++ .../NCAssistantSharedTextStore.swift | 58 +++++++ Share/NCShareExtension.swift | 147 ++++++++++++++++-- 4 files changed, 211 insertions(+), 13 deletions(-) create mode 100644 Share/Assistant/NCAssistantSharedTextStore.swift diff --git a/Brand/Share.plist b/Brand/Share.plist index 567991a236..ec2daea2b1 100755 --- a/Brand/Share.plist +++ b/Brand/Share.plist @@ -30,8 +30,7 @@ NSExtensionAttributes NSExtensionActivationRule - SUBQUERY (extensionItems, $extensionItem, SUBQUERY ($extensionItem.attachments,$attachment,(ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.data")).@count == $extensionItem.attachments.@count).@count > 0 - + SUBQUERY (extensionItems, $extensionItem, SUBQUERY ($extensionItem.attachments, $attachment, (ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.data" OR ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.text")).@count == $extensionItem.attachments.@count).@count > 0 NSExtensionMainStoryboard MainInterface @@ -39,4 +38,4 @@ com.apple.share-services - + \ No newline at end of file diff --git a/Nextcloud.xcodeproj/project.pbxproj b/Nextcloud.xcodeproj/project.pbxproj index 8bd5feb863..993059f4e7 100644 --- a/Nextcloud.xcodeproj/project.pbxproj +++ b/Nextcloud.xcodeproj/project.pbxproj @@ -926,6 +926,8 @@ F7FDFF702E437E55000D7688 /* NCAccountRequest.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F7FDFF512E437E55000D7688 /* NCAccountRequest.storyboard */; }; F7FDFF722E437E55000D7688 /* NCAccountRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7FDFF522E437E55000D7688 /* NCAccountRequest.swift */; }; F7FF2CB12842159500EBB7A1 /* NCSectionHeader.xib in Resources */ = {isa = PBXBuildFile; fileRef = F7FF2CB02842159500EBB7A1 /* NCSectionHeader.xib */; }; + F7FFFCA02FB300440015441E /* NCAssistantSharedTextStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7FFFC9D2FB300440015441E /* NCAssistantSharedTextStore.swift */; }; + F7FFFCA22FB300600015441E /* NCAssistantSharedTextStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7FFFC9D2FB300440015441E /* NCAssistantSharedTextStore.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -1829,6 +1831,7 @@ F7FDFF572E437E55000D7688 /* NCAccountSettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCAccountSettingsView.swift; sourceTree = ""; }; F7FDFF592E437E55000D7688 /* NCAccount.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCAccount.swift; sourceTree = ""; }; F7FF2CB02842159500EBB7A1 /* NCSectionHeader.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = NCSectionHeader.xib; sourceTree = ""; }; + F7FFFC9D2FB300440015441E /* NCAssistantSharedTextStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCAssistantSharedTextStore.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFileSystemSynchronizedRootGroup section */ @@ -2974,6 +2977,7 @@ F7C0F46D1C8880540059EC54 /* Share */ = { isa = PBXGroup; children = ( + F7FFFCA12FB3004B0015441E /* Assistant */, F714803A262EBE3900693E51 /* MainInterface.storyboard */, F7148040262EBE4000693E51 /* NCShareExtension.swift */, F7A573682E190377009C9257 /* NCShareExtensionData.swift */, @@ -3377,6 +3381,14 @@ path = Account; sourceTree = ""; }; + F7FFFCA12FB3004B0015441E /* Assistant */ = { + isa = PBXGroup; + children = ( + F7FFFC9D2FB300440015441E /* NCAssistantSharedTextStore.swift */, + ); + path = Assistant; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -4277,6 +4289,7 @@ F7F878AF1FB9E3B900599E4F /* NCEndToEndMetadata.swift in Sources */, F7327E3B2B73B8D600A462C7 /* Array+Extension.swift in Sources */, F7D7A76C2DCDD437003D2007 /* NCManageDatabase+AutoUpload.swift in Sources */, + F7FFFCA02FB300440015441E /* NCAssistantSharedTextStore.swift in Sources */, F39170AF2CB82024006127BC /* FileAutoRenamer+Extensions.swift in Sources */, F7D496FC2EBFA541004F9823 /* NCRecommendationsCell.swift in Sources */, F799DF832C4B7DCC003410B5 /* NCSectionFooter.swift in Sources */, @@ -4755,6 +4768,7 @@ F3DDFE212F1F953000A784C8 /* NCAssistantChatConversations.swift in Sources */, F72EC7262F45C91E00A2135C /* NCContextMenuNavigation.swift in Sources */, F7E2B64F2DDCC5C30075B4D0 /* NCMedia+TransferDelegate.swift in Sources */, + F7FFFCA22FB300600015441E /* NCAssistantSharedTextStore.swift in Sources */, F3DDFE0F2F15453900A784C8 /* NCAssistantChat.swift in Sources */, F7D68FCC28CB9051009139F3 /* NCManageDatabase+DashboardWidget.swift in Sources */, F76882292C0DD1E7001CF441 /* NCManageE2EEModel.swift in Sources */, diff --git a/Share/Assistant/NCAssistantSharedTextStore.swift b/Share/Assistant/NCAssistantSharedTextStore.swift new file mode 100644 index 0000000000..0a362491c6 --- /dev/null +++ b/Share/Assistant/NCAssistantSharedTextStore.swift @@ -0,0 +1,58 @@ +// SPDX-FileCopyrightText: Nextcloud GmbH +// SPDX-FileCopyrightText: 2026 Marino Faggiana +// SPDX-License-Identifier: GPL-3.0-or-later + +import Foundation + +enum NCAssistantSharedTextStore { + private static let sharedTextKey = "assistant.sharedText" + private static let sharedTextDateKey = "assistant.sharedTextDate" + private static var appGroupIdentifier: String { + NCBrandOptions.shared.capabilitiesGroup + } + + /// Saves text received from the Assistant share extension into the shared App Group container. + /// + /// - Parameter text: Text selected by the user in another app. + static func save(_ text: String) { + let trimmedText = text.trimmingCharacters(in: .whitespacesAndNewlines) + + guard !trimmedText.isEmpty, + let defaults = UserDefaults(suiteName: appGroupIdentifier) else { + return + } + + defaults.set(trimmedText, forKey: sharedTextKey) + defaults.set(Date(), forKey: sharedTextDateKey) + defaults.synchronize() + } + + /// Loads and removes the latest text received from the Assistant share extension. + /// + /// - Returns: Previously saved text, or `nil` when no valid text is available. + static func loadAndClear() -> String? { + guard let defaults = UserDefaults(suiteName: appGroupIdentifier), + let text = defaults.string(forKey: sharedTextKey)? + .trimmingCharacters(in: .whitespacesAndNewlines), + !text.isEmpty else { + return nil + } + + defaults.removeObject(forKey: sharedTextKey) + defaults.removeObject(forKey: sharedTextDateKey) + defaults.synchronize() + + return text + } + + /// Removes any pending shared text from the App Group container. + static func clear() { + guard let defaults = UserDefaults(suiteName: appGroupIdentifier) else { + return + } + + defaults.removeObject(forKey: sharedTextKey) + defaults.removeObject(forKey: sharedTextDateKey) + defaults.synchronize() + } +} diff --git a/Share/NCShareExtension.swift b/Share/NCShareExtension.swift index f3e5f8b60b..dad14e5c20 100644 --- a/Share/NCShareExtension.swift +++ b/Share/NCShareExtension.swift @@ -4,6 +4,7 @@ // SPDX-License-Identifier: GPL-3.0-or-later import UIKit +import UniformTypeIdentifiers import NextcloudKit import LucidBanner import SwiftUI @@ -150,20 +151,26 @@ class NCShareExtension: UIViewController { return } - NCFilesExtensionHandler(items: inputItems) { fileNames in - self.filesName = fileNames - DispatchQueue.main.async { - self.setCommandView() + Task { @MainActor in + if await handleAssistantSharedTextIfNeeded(inputItems: inputItems) { + return } - } - if NCPreferences().presentPasscode { - NCPasscode.shared.presentPasscode(viewController: self, delegate: self) { - NCPasscode.shared.enableTouchFaceID() + NCFilesExtensionHandler(items: inputItems) { fileNames in + self.filesName = fileNames + DispatchQueue.main.async { + self.setCommandView() + } } - } - self.collectionView.reloadData() + if NCPreferences().presentPasscode { + NCPasscode.shared.presentPasscode(viewController: self, delegate: self) { + NCPasscode.shared.enableTouchFaceID() + } + } + + self.collectionView.reloadData() + } } override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { @@ -189,6 +196,126 @@ class NCShareExtension: UIViewController { } } + /// Handles selected text shared from another app and redirects it to the Assistant flow. + /// + /// - Parameter inputItems: Extension input items received from the host application. + /// - Returns: `true` when text was handled and the normal file upload flow must stop. + private func handleAssistantSharedTextIfNeeded(inputItems: [NSExtensionItem]) async -> Bool { + guard let text = await loadAssistantSharedText(from: inputItems), + !text.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty else { + return false + } + + NCAssistantSharedTextStore.save(text) + openMainAppForAssistantSharedText() + extensionContext?.completeRequest(returningItems: nil, completionHandler: nil) + + return true + } + + /// Loads the first valid text payload from the extension input items. + /// + /// - Parameter inputItems: Extension input items received from the host application. + /// - Returns: Shared text when available, otherwise `nil`. + private func loadAssistantSharedText(from inputItems: [NSExtensionItem]) async -> String? { + for item in inputItems { + guard let attachments = item.attachments else { + continue + } + + for provider in attachments { + if let text = await loadAssistantText(from: provider) { + return text + } + } + } + + return nil + } + + /// Loads text from an item provider when it exposes a supported text representation. + /// + /// - Parameter provider: Item provider received from the host application. + /// - Returns: Text content when the provider supports a text type. + private func loadAssistantText(from provider: NSItemProvider) async -> String? { + let plainTextIdentifier = UTType.plainText.identifier + let textIdentifier = UTType.text.identifier + + if provider.hasItemConformingToTypeIdentifier(plainTextIdentifier) { + return await loadAssistantString(from: provider, typeIdentifier: plainTextIdentifier) + } + + if provider.hasItemConformingToTypeIdentifier(textIdentifier) { + return await loadAssistantString(from: provider, typeIdentifier: textIdentifier) + } + + if provider.canLoadObject(ofClass: NSString.self) { + return await loadAssistantNSString(from: provider) + } + + return nil + } + + /// Loads a string payload using a specific uniform type identifier. + /// + /// - Parameters: + /// - provider: Item provider received from the host application. + /// - typeIdentifier: Uniform type identifier to load. + /// - Returns: String representation of the payload, when available. + private func loadAssistantString(from provider: NSItemProvider, typeIdentifier: String) async -> String? { + await withCheckedContinuation { continuation in + provider.loadItem(forTypeIdentifier: typeIdentifier, options: nil) { item, _ in + if let text = item as? String { + continuation.resume(returning: text) + } else if let data = item as? Data, + let text = String(data: data, encoding: .utf8) { + continuation.resume(returning: text) + } else if let url = item as? URL, + let text = try? String(contentsOf: url, encoding: .utf8) { + continuation.resume(returning: text) + } else { + continuation.resume(returning: nil) + } + } + } + } + + /// Loads an NSString object from the provided item provider. + /// + /// - Parameter provider: Item provider received from the host application. + /// - Returns: String value when NSString loading succeeds. + private func loadAssistantNSString(from provider: NSItemProvider) async -> String? { + await withCheckedContinuation { continuation in + provider.loadObject(ofClass: NSString.self) { object, _ in + if let string = object as? NSString { + continuation.resume(returning: string as String) + } else { + continuation.resume(returning: nil) + } + } + } + } + + /// Opens the main app using the Assistant shared-text deep link. + private func openMainAppForAssistantSharedText() { + guard let url = URL(string: "nextcloud://assistant/shared-text") else { + return + } + + var responder: UIResponder? = self + + while let currentResponder = responder { + let selector = NSSelectorFromString("openURL:") + + if currentResponder.responds(to: selector) { + currentResponder.perform(selector, with: url) + return + } + + responder = currentResponder.next + } + } + func showAlert(title: String = "_error_", description: String, onDismiss: (() -> Void)? = nil) { let description = description.replacingOccurrences(of: "\t", with: "\n") let alertController = UIAlertController(title: NSLocalizedString(title, comment: ""), message: NSLocalizedString(description, comment: ""), preferredStyle: .alert) From 1cdfe9b2745aac04cfc8e473de42aacc0af24f4d Mon Sep 17 00:00:00 2001 From: Marino Faggiana Date: Tue, 12 May 2026 09:08:17 +0200 Subject: [PATCH 02/22] cod Signed-off-by: Marino Faggiana --- Nextcloud.xcodeproj/project.pbxproj | 4 + .../NCShareExtension+Assistant.swift | 127 ++++++++++++++++++ Share/NCShareExtension.swift | 120 ----------------- iOSClient/SceneDelegate.swift | 16 +++ 4 files changed, 147 insertions(+), 120 deletions(-) create mode 100644 Share/Assistant/NCShareExtension+Assistant.swift diff --git a/Nextcloud.xcodeproj/project.pbxproj b/Nextcloud.xcodeproj/project.pbxproj index 993059f4e7..8376eab343 100644 --- a/Nextcloud.xcodeproj/project.pbxproj +++ b/Nextcloud.xcodeproj/project.pbxproj @@ -928,6 +928,7 @@ F7FF2CB12842159500EBB7A1 /* NCSectionHeader.xib in Resources */ = {isa = PBXBuildFile; fileRef = F7FF2CB02842159500EBB7A1 /* NCSectionHeader.xib */; }; F7FFFCA02FB300440015441E /* NCAssistantSharedTextStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7FFFC9D2FB300440015441E /* NCAssistantSharedTextStore.swift */; }; F7FFFCA22FB300600015441E /* NCAssistantSharedTextStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7FFFC9D2FB300440015441E /* NCAssistantSharedTextStore.swift */; }; + F7FFFCA42FB3088E0015441E /* NCShareExtension+Assistant.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7FFFCA32FB3088D0015441E /* NCShareExtension+Assistant.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -1832,6 +1833,7 @@ F7FDFF592E437E55000D7688 /* NCAccount.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCAccount.swift; sourceTree = ""; }; F7FF2CB02842159500EBB7A1 /* NCSectionHeader.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = NCSectionHeader.xib; sourceTree = ""; }; F7FFFC9D2FB300440015441E /* NCAssistantSharedTextStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCAssistantSharedTextStore.swift; sourceTree = ""; }; + F7FFFCA32FB3088D0015441E /* NCShareExtension+Assistant.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NCShareExtension+Assistant.swift"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFileSystemSynchronizedRootGroup section */ @@ -3385,6 +3387,7 @@ isa = PBXGroup; children = ( F7FFFC9D2FB300440015441E /* NCAssistantSharedTextStore.swift */, + F7FFFCA32FB3088D0015441E /* NCShareExtension+Assistant.swift */, ); path = Assistant; sourceTree = ""; @@ -4311,6 +4314,7 @@ F763412D2EBE255B0056F538 /* NCNetworking+NextcloudKitDelegate.swift in Sources */, F72FD3B8297ED49A00075D28 /* NCManageDatabase+E2EE.swift in Sources */, F7A76DC8256A71CD00119AB3 /* UIImage+Extension.swift in Sources */, + F7FFFCA42FB3088E0015441E /* NCShareExtension+Assistant.swift in Sources */, F3E173C32C9B1067006D177A /* AwakeMode.swift in Sources */, F711A4E52AF9310500095DD8 /* NCUtility+Image.swift in Sources */, F73EF7AA2B0223900087E6E9 /* NCManageDatabase+Comments.swift in Sources */, diff --git a/Share/Assistant/NCShareExtension+Assistant.swift b/Share/Assistant/NCShareExtension+Assistant.swift new file mode 100644 index 0000000000..da78b094be --- /dev/null +++ b/Share/Assistant/NCShareExtension+Assistant.swift @@ -0,0 +1,127 @@ +// SPDX-FileCopyrightText: Nextcloud GmbH +// SPDX-FileCopyrightText: 2026 Marino Faggiana +// SPDX-License-Identifier: GPL-3.0-or-later + +import UIKit +import UniformTypeIdentifiers +import NextcloudKit + +extension NCShareExtension { + /// Handles selected text shared from another app and redirects it to the Assistant flow. + /// + /// - Parameter inputItems: Extension input items received from the host application. + /// - Returns: `true` when text was handled and the normal file upload flow must stop. + func handleAssistantSharedTextIfNeeded(inputItems: [NSExtensionItem]) async -> Bool { + guard let text = await loadAssistantSharedText(from: inputItems), + !text.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty else { + return false + } + + NCAssistantSharedTextStore.save(text) + openMainAppForAssistantSharedText() + + return true + } + + /// Loads the first valid text payload from the extension input items. + /// + /// - Parameter inputItems: Extension input items received from the host application. + /// - Returns: Shared text when available, otherwise `nil`. + private func loadAssistantSharedText(from inputItems: [NSExtensionItem]) async -> String? { + for item in inputItems { + guard let attachments = item.attachments else { + continue + } + + for provider in attachments { + if let text = await loadAssistantText(from: provider) { + return text + } + } + } + + return nil + } + + /// Loads text from an item provider when it exposes a supported text representation. + /// + /// - Parameter provider: Item provider received from the host application. + /// - Returns: Text content when the provider supports a text type. + private func loadAssistantText(from provider: NSItemProvider) async -> String? { + let plainTextIdentifier = UTType.plainText.identifier + let textIdentifier = UTType.text.identifier + + if provider.hasItemConformingToTypeIdentifier(plainTextIdentifier) { + return await loadAssistantString(from: provider, typeIdentifier: plainTextIdentifier) + } + + if provider.hasItemConformingToTypeIdentifier(textIdentifier) { + return await loadAssistantString(from: provider, typeIdentifier: textIdentifier) + } + + if provider.canLoadObject(ofClass: NSString.self) { + return await loadAssistantNSString(from: provider) + } + + return nil + } + + /// Loads a string payload using a specific uniform type identifier. + /// + /// - Parameters: + /// - provider: Item provider received from the host application. + /// - typeIdentifier: Uniform type identifier to load. + /// - Returns: String representation of the payload, when available. + private func loadAssistantString(from provider: NSItemProvider, typeIdentifier: String) async -> String? { + await withCheckedContinuation { continuation in + provider.loadItem(forTypeIdentifier: typeIdentifier, options: nil) { item, _ in + if let text = item as? String { + continuation.resume(returning: text) + } else if let data = item as? Data, + let text = String(data: data, encoding: .utf8) { + continuation.resume(returning: text) + } else if let url = item as? URL, + let text = try? String(contentsOf: url, encoding: .utf8) { + continuation.resume(returning: text) + } else { + continuation.resume(returning: nil) + } + } + } + } + + /// Loads an NSString object from the provided item provider. + /// + /// - Parameter provider: Item provider received from the host application. + /// - Returns: String value when NSString loading succeeds. + private func loadAssistantNSString(from provider: NSItemProvider) async -> String? { + await withCheckedContinuation { continuation in + provider.loadObject(ofClass: NSString.self) { object, _ in + if let string = object as? NSString { + continuation.resume(returning: string as String) + } else { + continuation.resume(returning: nil) + } + } + } + } + + /// Opens the main app using the Assistant shared-text deep link. + private func openMainAppForAssistantSharedText() { + guard let url = URL(string: "nextcloud://assistant/shared-text") else { + return + } + + extensionContext?.open(url) { [weak self] success in + if success { + nkLog(debug: "Assistant shared text deep link opened successfully") + } else { + nkLog(error: "Assistant shared text deep link failed to open") + } + + DispatchQueue.main.async { + self?.extensionContext?.completeRequest(returningItems: nil, completionHandler: nil) + } + } + } +} diff --git a/Share/NCShareExtension.swift b/Share/NCShareExtension.swift index dad14e5c20..6642f87587 100644 --- a/Share/NCShareExtension.swift +++ b/Share/NCShareExtension.swift @@ -196,126 +196,6 @@ class NCShareExtension: UIViewController { } } - /// Handles selected text shared from another app and redirects it to the Assistant flow. - /// - /// - Parameter inputItems: Extension input items received from the host application. - /// - Returns: `true` when text was handled and the normal file upload flow must stop. - private func handleAssistantSharedTextIfNeeded(inputItems: [NSExtensionItem]) async -> Bool { - guard let text = await loadAssistantSharedText(from: inputItems), - !text.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty else { - return false - } - - NCAssistantSharedTextStore.save(text) - openMainAppForAssistantSharedText() - extensionContext?.completeRequest(returningItems: nil, completionHandler: nil) - - return true - } - - /// Loads the first valid text payload from the extension input items. - /// - /// - Parameter inputItems: Extension input items received from the host application. - /// - Returns: Shared text when available, otherwise `nil`. - private func loadAssistantSharedText(from inputItems: [NSExtensionItem]) async -> String? { - for item in inputItems { - guard let attachments = item.attachments else { - continue - } - - for provider in attachments { - if let text = await loadAssistantText(from: provider) { - return text - } - } - } - - return nil - } - - /// Loads text from an item provider when it exposes a supported text representation. - /// - /// - Parameter provider: Item provider received from the host application. - /// - Returns: Text content when the provider supports a text type. - private func loadAssistantText(from provider: NSItemProvider) async -> String? { - let plainTextIdentifier = UTType.plainText.identifier - let textIdentifier = UTType.text.identifier - - if provider.hasItemConformingToTypeIdentifier(plainTextIdentifier) { - return await loadAssistantString(from: provider, typeIdentifier: plainTextIdentifier) - } - - if provider.hasItemConformingToTypeIdentifier(textIdentifier) { - return await loadAssistantString(from: provider, typeIdentifier: textIdentifier) - } - - if provider.canLoadObject(ofClass: NSString.self) { - return await loadAssistantNSString(from: provider) - } - - return nil - } - - /// Loads a string payload using a specific uniform type identifier. - /// - /// - Parameters: - /// - provider: Item provider received from the host application. - /// - typeIdentifier: Uniform type identifier to load. - /// - Returns: String representation of the payload, when available. - private func loadAssistantString(from provider: NSItemProvider, typeIdentifier: String) async -> String? { - await withCheckedContinuation { continuation in - provider.loadItem(forTypeIdentifier: typeIdentifier, options: nil) { item, _ in - if let text = item as? String { - continuation.resume(returning: text) - } else if let data = item as? Data, - let text = String(data: data, encoding: .utf8) { - continuation.resume(returning: text) - } else if let url = item as? URL, - let text = try? String(contentsOf: url, encoding: .utf8) { - continuation.resume(returning: text) - } else { - continuation.resume(returning: nil) - } - } - } - } - - /// Loads an NSString object from the provided item provider. - /// - /// - Parameter provider: Item provider received from the host application. - /// - Returns: String value when NSString loading succeeds. - private func loadAssistantNSString(from provider: NSItemProvider) async -> String? { - await withCheckedContinuation { continuation in - provider.loadObject(ofClass: NSString.self) { object, _ in - if let string = object as? NSString { - continuation.resume(returning: string as String) - } else { - continuation.resume(returning: nil) - } - } - } - } - - /// Opens the main app using the Assistant shared-text deep link. - private func openMainAppForAssistantSharedText() { - guard let url = URL(string: "nextcloud://assistant/shared-text") else { - return - } - - var responder: UIResponder? = self - - while let currentResponder = responder { - let selector = NSSelectorFromString("openURL:") - - if currentResponder.responds(to: selector) { - currentResponder.perform(selector, with: url) - return - } - - responder = currentResponder.next - } - } - func showAlert(title: String = "_error_", description: String, onDismiss: (() -> Void)? = nil) { let description = description.replacingOccurrences(of: "\t", with: "\n") let alertController = UIAlertController(title: NSLocalizedString(title, comment: ""), message: NSLocalizedString(description, comment: ""), preferredStyle: .alert) diff --git a/iOSClient/SceneDelegate.swift b/iOSClient/SceneDelegate.swift index 19c37ca126..51fa195228 100644 --- a/iOSClient/SceneDelegate.swift +++ b/iOSClient/SceneDelegate.swift @@ -335,6 +335,22 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { return nil } + /* + Example: nextcloud://assistant/shared-text + */ + + if scheme == global.appScheme, + action == "assistant", + url.path == "/shared-text" { + guard let text = NCAssistantSharedTextStore.loadAndClear() else { + nkLog(error: "Assistant shared text deep link received but no text was found") + return + } + + nkLog(debug: "Assistant shared text received: \(text)") + return + } + /* Example: nextcloud://open-action?action=create-voice-memo&&user=marinofaggiana&url=https://cloud.nextcloud.com */ From c6c0ae27d2f85a8086c692662fe21fc98a96dc23 Mon Sep 17 00:00:00 2001 From: Marino Faggiana Date: Tue, 12 May 2026 09:33:12 +0200 Subject: [PATCH 03/22] code Signed-off-by: Marino Faggiana --- .../NCShareExtension+Assistant.swift | 50 ++++++++++++++++--- 1 file changed, 42 insertions(+), 8 deletions(-) diff --git a/Share/Assistant/NCShareExtension+Assistant.swift b/Share/Assistant/NCShareExtension+Assistant.swift index da78b094be..f00f9a0985 100644 --- a/Share/Assistant/NCShareExtension+Assistant.swift +++ b/Share/Assistant/NCShareExtension+Assistant.swift @@ -109,19 +109,53 @@ extension NCShareExtension { /// Opens the main app using the Assistant shared-text deep link. private func openMainAppForAssistantSharedText() { guard let url = URL(string: "nextcloud://assistant/shared-text") else { + extensionContext?.completeRequest(returningItems: nil, completionHandler: nil) return } - extensionContext?.open(url) { [weak self] success in - if success { - nkLog(debug: "Assistant shared text deep link opened successfully") - } else { - nkLog(error: "Assistant shared text deep link failed to open") - } + openAssistantSharedTextURLThroughResponderChain(url) + + DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { [weak self] in + self?.extensionContext?.completeRequest(returningItems: nil, completionHandler: nil) + } + } + + /// Opens the Assistant shared-text URL using the responder chain. + /// + /// This intentionally avoids the deprecated `openURL:` selector because UIKit now forces + /// that API to return `false`. The modern UIApplication selector is invoked dynamically and + /// only when the responder is actually an UIApplication instance. + /// + /// - Parameter url: Deep link URL to open in the containing application. + private func openAssistantSharedTextURLThroughResponderChain(_ url: URL) { + let selector = NSSelectorFromString("openURL:options:completionHandler:") + let applicationClass = NSClassFromString("UIApplication") + var responder: UIResponder? = self + + while let currentResponder = responder { + if let applicationClass, + currentResponder.isKind(of: applicationClass), + currentResponder.responds(to: selector), + let implementation = currentResponder.method(for: selector) { + typealias CompletionBlock = @convention(block) (Bool) -> Void + typealias OpenURLFunction = @convention(c) (AnyObject, Selector, NSURL, NSDictionary, CompletionBlock?) -> Void + + let openURL = unsafeBitCast(implementation, to: OpenURLFunction.self) + let completion: CompletionBlock = { success in + if success { + nkLog(debug: "Assistant shared text deep link performed through modern responder chain") + } else { + nkLog(error: "Assistant shared text deep link modern responder chain returned false") + } + } - DispatchQueue.main.async { - self?.extensionContext?.completeRequest(returningItems: nil, completionHandler: nil) + openURL(currentResponder, selector, url as NSURL, NSDictionary(), completion) + return } + + responder = currentResponder.next } + + nkLog(error: "Assistant shared text deep link failed because no UIApplication responder can open URL") } } From 8d115467831762544735388361d145836473a7be Mon Sep 17 00:00:00 2001 From: Marino Faggiana Date: Tue, 12 May 2026 09:43:10 +0200 Subject: [PATCH 04/22] fix Signed-off-by: Marino Faggiana --- .../NCShareExtension+Assistant.swift | 51 ++++++++++--------- 1 file changed, 28 insertions(+), 23 deletions(-) diff --git a/Share/Assistant/NCShareExtension+Assistant.swift b/Share/Assistant/NCShareExtension+Assistant.swift index f00f9a0985..162c594cc9 100644 --- a/Share/Assistant/NCShareExtension+Assistant.swift +++ b/Share/Assistant/NCShareExtension+Assistant.swift @@ -120,40 +120,45 @@ extension NCShareExtension { } } - /// Opens the Assistant shared-text URL using the responder chain. + /// Opens the Assistant shared-text deep link from the Share extension. /// - /// This intentionally avoids the deprecated `openURL:` selector because UIKit now forces - /// that API to return `false`. The modern UIApplication selector is invoked dynamically and - /// only when the responder is actually an UIApplication instance. + /// Share extensions cannot use `UIApplication.shared` directly because it is not + /// extension-safe. This method walks the responder chain until it finds the hidden + /// `UIApplication` responder and invokes the modern `open(_:options:completionHandler:)` + /// Objective-C selector dynamically. + /// + /// This is intentionally isolated because it relies on Objective-C runtime dispatch. /// /// - Parameter url: Deep link URL to open in the containing application. private func openAssistantSharedTextURLThroughResponderChain(_ url: URL) { let selector = NSSelectorFromString("openURL:options:completionHandler:") - let applicationClass = NSClassFromString("UIApplication") + let applicationClass: AnyClass? = NSClassFromString("UIApplication") var responder: UIResponder? = self while let currentResponder = responder { - if let applicationClass, - currentResponder.isKind(of: applicationClass), - currentResponder.responds(to: selector), - let implementation = currentResponder.method(for: selector) { - typealias CompletionBlock = @convention(block) (Bool) -> Void - typealias OpenURLFunction = @convention(c) (AnyObject, Selector, NSURL, NSDictionary, CompletionBlock?) -> Void - - let openURL = unsafeBitCast(implementation, to: OpenURLFunction.self) - let completion: CompletionBlock = { success in - if success { - nkLog(debug: "Assistant shared text deep link performed through modern responder chain") - } else { - nkLog(error: "Assistant shared text deep link modern responder chain returned false") - } - } + guard let applicationClass, + currentResponder.isKind(of: applicationClass), + currentResponder.responds(to: selector), + let implementation = currentResponder.method(for: selector) else { + responder = currentResponder.next + continue + } + + typealias CompletionBlock = @convention(block) (Bool) -> Void + typealias OpenURLFunction = @convention(c) (AnyObject, Selector, NSURL, NSDictionary, CompletionBlock?) -> Void - openURL(currentResponder, selector, url as NSURL, NSDictionary(), completion) - return + let openURL = unsafeBitCast(implementation, to: OpenURLFunction.self) + + let completion: CompletionBlock = { success in + if success { + nkLog(debug: "Assistant shared text deep link performed through modern responder chain") + } else { + nkLog(error: "Assistant shared text deep link modern responder chain returned false") + } } - responder = currentResponder.next + openURL(currentResponder, selector, url as NSURL, NSDictionary(), completion) + return } nkLog(error: "Assistant shared text deep link failed because no UIApplication responder can open URL") From 19797c6c0d39be8d94ba900ef2c9a7658b82f815 Mon Sep 17 00:00:00 2001 From: Marino Faggiana Date: Tue, 12 May 2026 09:57:48 +0200 Subject: [PATCH 05/22] cleaning Signed-off-by: Marino Faggiana --- Share/NCShareExtension.swift | 7 +++++++ iOSClient/SceneDelegate.swift | 1 - 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/Share/NCShareExtension.swift b/Share/NCShareExtension.swift index 6642f87587..1d0ba7cc68 100644 --- a/Share/NCShareExtension.swift +++ b/Share/NCShareExtension.swift @@ -151,11 +151,18 @@ class NCShareExtension: UIViewController { return } + // Keep the Share extension visually hidden until we know whether this is + // an Assistant text handoff or a normal file upload flow. This avoids the + // visible open-and-close flash when the extension only needs to redirect text. + view.alpha = 0 + Task { @MainActor in if await handleAssistantSharedTextIfNeeded(inputItems: inputItems) { return } + self.view.alpha = 1 + NCFilesExtensionHandler(items: inputItems) { fileNames in self.filesName = fileNames DispatchQueue.main.async { diff --git a/iOSClient/SceneDelegate.swift b/iOSClient/SceneDelegate.swift index 51fa195228..8dd9cb5a98 100644 --- a/iOSClient/SceneDelegate.swift +++ b/iOSClient/SceneDelegate.swift @@ -343,7 +343,6 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { action == "assistant", url.path == "/shared-text" { guard let text = NCAssistantSharedTextStore.loadAndClear() else { - nkLog(error: "Assistant shared text deep link received but no text was found") return } From 92858a9d356a362788c25df7a1a79a56b7df455a Mon Sep 17 00:00:00 2001 From: Marino Faggiana Date: Tue, 12 May 2026 10:09:57 +0200 Subject: [PATCH 06/22] assistant Signed-off-by: Marino Faggiana --- iOSClient/SceneDelegate.swift | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/iOSClient/SceneDelegate.swift b/iOSClient/SceneDelegate.swift index 8dd9cb5a98..4f1962eb53 100644 --- a/iOSClient/SceneDelegate.swift +++ b/iOSClient/SceneDelegate.swift @@ -336,7 +336,7 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { } /* - Example: nextcloud://assistant/shared-text + Example: nextcloud://assistant/shared-text text */ if scheme == global.appScheme, @@ -347,6 +347,11 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { } nkLog(debug: "Assistant shared text received: \(text)") + + let assistant = NCAssistant(assistantModel: NCAssistantModel(controller: controller), chatModel: NCAssistantChatModel(controller: controller), conversationsModel: NCAssistantChatConversationsModel(controller: controller)) + let hostingController = UIHostingController(rootView: assistant) + controller.present(hostingController, animated: true, completion: nil) + return } From da55f64fc06d9b02322bff6e922ffc474ea26515 Mon Sep 17 00:00:00 2001 From: Marino Faggiana Date: Tue, 12 May 2026 10:29:04 +0200 Subject: [PATCH 07/22] assistantEnabled Signed-off-by: Marino Faggiana --- iOSClient/SceneDelegate.swift | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/iOSClient/SceneDelegate.swift b/iOSClient/SceneDelegate.swift index 4f1962eb53..b946430bbc 100644 --- a/iOSClient/SceneDelegate.swift +++ b/iOSClient/SceneDelegate.swift @@ -336,7 +336,7 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { } /* - Example: nextcloud://assistant/shared-text text + Example: nextcloud://assistant/shared-text */ if scheme == global.appScheme, @@ -348,9 +348,14 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { nkLog(debug: "Assistant shared text received: \(text)") - let assistant = NCAssistant(assistantModel: NCAssistantModel(controller: controller), chatModel: NCAssistantChatModel(controller: controller), conversationsModel: NCAssistantChatConversationsModel(controller: controller)) - let hostingController = UIHostingController(rootView: assistant) - controller.present(hostingController, animated: true, completion: nil) + Task { @MainActor in + let capabilities = await NKCapabilities.shared.getCapabilities(for: controller.account) + if capabilities.assistantEnabled { + let assistant = NCAssistant(assistantModel: NCAssistantModel(controller: controller), chatModel: NCAssistantChatModel(controller: controller), conversationsModel: NCAssistantChatConversationsModel(controller: controller)) + let hostingController = UIHostingController(rootView: assistant) + controller.present(hostingController, animated: true, completion: nil) + } + } return } From aca4dd2040b4f6b37a5869ef0c1f97e611479e87 Mon Sep 17 00:00:00 2001 From: Marino Faggiana Date: Tue, 12 May 2026 10:29:55 +0200 Subject: [PATCH 08/22] clean code Signed-off-by: Marino Faggiana --- iOSClient/SceneDelegate.swift | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/iOSClient/SceneDelegate.swift b/iOSClient/SceneDelegate.swift index b946430bbc..fe65585a3b 100644 --- a/iOSClient/SceneDelegate.swift +++ b/iOSClient/SceneDelegate.swift @@ -339,9 +339,7 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { Example: nextcloud://assistant/shared-text */ - if scheme == global.appScheme, - action == "assistant", - url.path == "/shared-text" { + if scheme == global.appScheme, action == "assistant", url.path == "/shared-text" { guard let text = NCAssistantSharedTextStore.loadAndClear() else { return } From dc88d4c27e2d5c568b3f3d275449dcbd3c53a16a Mon Sep 17 00:00:00 2001 From: Marino Faggiana Date: Wed, 13 May 2026 07:01:44 +0200 Subject: [PATCH 09/22] code Signed-off-by: Marino Faggiana --- iOSClient/Assistant/Components/ChatInputField.swift | 7 ++++--- iOSClient/SceneDelegate.swift | 2 -- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/iOSClient/Assistant/Components/ChatInputField.swift b/iOSClient/Assistant/Components/ChatInputField.swift index dd2845da55..421329ab82 100644 --- a/iOSClient/Assistant/Components/ChatInputField.swift +++ b/iOSClient/Assistant/Components/ChatInputField.swift @@ -11,7 +11,8 @@ struct ChatInputField: View { @Binding var isDisabled: Bool var onSend: ((_ input: String) -> Void)? - init(isLoading: Binding = .constant(false), isDisabled: Binding = .constant(false), onSend: ((_: String) -> Void)? = nil) { + init(input: String = "", isLoading: Binding = .constant(false), isDisabled: Binding = .constant(false), onSend: ((_: String) -> Void)? = nil) { + _text = State(initialValue: input) _isLoading = isLoading _isDisabled = isDisabled self.onSend = onSend @@ -60,6 +61,6 @@ struct ChatInputField: View { } #Preview { - ChatInputField(isLoading: .constant(false)) - ChatInputField(isLoading: .constant(true)) + ChatInputField(input: "Text received from outside", isLoading: .constant(false)) + ChatInputField(input: "Loading text", isLoading: .constant(true)) } diff --git a/iOSClient/SceneDelegate.swift b/iOSClient/SceneDelegate.swift index fe65585a3b..3a79a15c3e 100644 --- a/iOSClient/SceneDelegate.swift +++ b/iOSClient/SceneDelegate.swift @@ -344,8 +344,6 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { return } - nkLog(debug: "Assistant shared text received: \(text)") - Task { @MainActor in let capabilities = await NKCapabilities.shared.getCapabilities(for: controller.account) if capabilities.assistantEnabled { From be69037e419a8861cd70027ca880f9b16d186598 Mon Sep 17 00:00:00 2001 From: Marino Faggiana Date: Wed, 13 May 2026 13:30:47 +0200 Subject: [PATCH 10/22] Directediting (#4109) * code Signed-off-by: Marino Faggiana * code Signed-off-by: Marino Faggiana * whiteboard Signed-off-by: Marino Faggiana * nextcloudkit Signed-off-by: Marino Faggiana * pencil.and.scribble Signed-off-by: Marino Faggiana --------- Signed-off-by: Marino Faggiana --- Nextcloud.xcodeproj/project.pbxproj | 30 +++-- .../Data/NCManageDatabase+Metadata.swift | 13 +- ...Common+UIEditMenuInteractionDelegate.swift | 10 +- iOSClient/Main/Create/NCCreate.swift | 27 +---- .../Main/NCMainNavigationController.swift | 2 +- iOSClient/Menu/NCContextMenuPlus.swift | 111 +++++++++++------- iOSClient/Utility/NCUtility+Image.swift | 1 + iOSClient/Utility/NCUtility.swift | 12 +- iOSClient/Viewer/NCViewer.swift | 68 +++++------ .../NCDirectEditorAdapter.swift | 58 +++++++++ .../NCViewerDirectEditing.storyboard} | 8 +- .../NCViewerDirectEditing.swift} | 6 +- 12 files changed, 208 insertions(+), 138 deletions(-) create mode 100644 iOSClient/Viewer/NCViewerDirectEditing/NCDirectEditorAdapter.swift rename iOSClient/Viewer/{NCViewerNextcloudText/NCViewerNextcloudText.storyboard => NCViewerDirectEditing/NCViewerDirectEditing.storyboard} (91%) rename iOSClient/Viewer/{NCViewerNextcloudText/NCViewerNextcloudText.swift => NCViewerDirectEditing/NCViewerDirectEditing.swift} (98%) diff --git a/Nextcloud.xcodeproj/project.pbxproj b/Nextcloud.xcodeproj/project.pbxproj index 8376eab343..e667c43d04 100644 --- a/Nextcloud.xcodeproj/project.pbxproj +++ b/Nextcloud.xcodeproj/project.pbxproj @@ -304,7 +304,7 @@ F72CA05C2F5051DB002E2F06 /* AlertActionBannerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F72CA05B2F5051DB002E2F06 /* AlertActionBannerView.swift */; }; F72CD63A25C19EBF00F46F9A /* NCAutoUpload.swift in Sources */ = {isa = PBXBuildFile; fileRef = F72CD63925C19EBF00F46F9A /* NCAutoUpload.swift */; }; F72D1007210B6882009C96B7 /* NCPushNotificationEncryption.m in Sources */ = {isa = PBXBuildFile; fileRef = F72D1005210B6882009C96B7 /* NCPushNotificationEncryption.m */; }; - F72D404923D2082500A97FD0 /* NCViewerNextcloudText.swift in Sources */ = {isa = PBXBuildFile; fileRef = F72D404823D2082500A97FD0 /* NCViewerNextcloudText.swift */; }; + F72D404923D2082500A97FD0 /* NCViewerDirectEditing.swift in Sources */ = {isa = PBXBuildFile; fileRef = F72D404823D2082500A97FD0 /* NCViewerDirectEditing.swift */; }; F72D7EB7263B1207000B3DFC /* MarkdownKit in Frameworks */ = {isa = PBXBuildFile; productRef = F72D7EB6263B1207000B3DFC /* MarkdownKit */; }; F72DA9B425F53E4E00B87DB1 /* SwiftRichString in Frameworks */ = {isa = PBXBuildFile; productRef = F72DA9B325F53E4E00B87DB1 /* SwiftRichString */; }; F72EA95228B7BA2A00C88F0C /* DashboardWidgetProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = F72EA95128B7BA2A00C88F0C /* DashboardWidgetProvider.swift */; }; @@ -339,7 +339,7 @@ F7386E482DA90E0F009A00F6 /* NCAppVersionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7386E452DA90E02009A00F6 /* NCAppVersionManager.swift */; }; F73BC74F2F23811E003170C2 /* WarningBannerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7DF7B3E2F1A2EE400514020 /* WarningBannerView.swift */; }; F73CB3B222E072A000AD728E /* NCShareHeaderView.xib in Resources */ = {isa = PBXBuildFile; fileRef = F73CB3B122E072A000AD728E /* NCShareHeaderView.xib */; }; - F73D11FA253C5F4800DF9BEC /* NCViewerNextcloudText.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F73D11F9253C5F4800DF9BEC /* NCViewerNextcloudText.storyboard */; }; + F73D11FA253C5F4800DF9BEC /* NCViewerDirectEditing.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F73D11F9253C5F4800DF9BEC /* NCViewerDirectEditing.storyboard */; }; F73EF7A72B0223900087E6E9 /* NCManageDatabase+Comments.swift in Sources */ = {isa = PBXBuildFile; fileRef = F73EF7A62B0223900087E6E9 /* NCManageDatabase+Comments.swift */; }; F73EF7A82B0223900087E6E9 /* NCManageDatabase+Comments.swift in Sources */ = {isa = PBXBuildFile; fileRef = F73EF7A62B0223900087E6E9 /* NCManageDatabase+Comments.swift */; }; F73EF7A92B0223900087E6E9 /* NCManageDatabase+Comments.swift in Sources */ = {isa = PBXBuildFile; fileRef = F73EF7A62B0223900087E6E9 /* NCManageDatabase+Comments.swift */; }; @@ -430,6 +430,7 @@ F758B45A212C564000515F55 /* NCScan.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F758B457212C564000515F55 /* NCScan.storyboard */; }; F758B45E212C569D00515F55 /* NCScanCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F758B45D212C569C00515F55 /* NCScanCell.swift */; }; F758B460212C56A400515F55 /* NCScan.swift in Sources */ = {isa = PBXBuildFile; fileRef = F758B45F212C56A400515F55 /* NCScan.swift */; }; + F75A60552FB4493A00F8247E /* NCDirectEditorAdapter.swift in Sources */ = {isa = PBXBuildFile; fileRef = F75A60542FB4493A00F8247E /* NCDirectEditorAdapter.swift */; }; F75A9EE623796C6F0044CFCE /* NCNetworking.swift in Sources */ = {isa = PBXBuildFile; fileRef = F75A9EE523796C6F0044CFCE /* NCNetworking.swift */; }; F75A9EE723796C6F0044CFCE /* NCNetworking.swift in Sources */ = {isa = PBXBuildFile; fileRef = F75A9EE523796C6F0044CFCE /* NCNetworking.swift */; }; F75C0C4823D1FAE300163CC8 /* NCRichWorkspaceCommon.swift in Sources */ = {isa = PBXBuildFile; fileRef = F75C0C4723D1FAE300163CC8 /* NCRichWorkspaceCommon.swift */; }; @@ -1373,7 +1374,7 @@ F72CD63925C19EBF00F46F9A /* NCAutoUpload.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCAutoUpload.swift; sourceTree = ""; }; F72D1005210B6882009C96B7 /* NCPushNotificationEncryption.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NCPushNotificationEncryption.m; sourceTree = ""; }; F72D1006210B6882009C96B7 /* NCPushNotificationEncryption.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NCPushNotificationEncryption.h; sourceTree = ""; }; - F72D404823D2082500A97FD0 /* NCViewerNextcloudText.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NCViewerNextcloudText.swift; sourceTree = ""; }; + F72D404823D2082500A97FD0 /* NCViewerDirectEditing.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NCViewerDirectEditing.swift; sourceTree = ""; }; F72EA95128B7BA2A00C88F0C /* DashboardWidgetProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashboardWidgetProvider.swift; sourceTree = ""; }; F72EA95328B7BABA00C88F0C /* FilesWidgetProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FilesWidgetProvider.swift; sourceTree = ""; }; F72EA95728B7BC4F00C88F0C /* FilesData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FilesData.swift; sourceTree = ""; }; @@ -1400,7 +1401,7 @@ F7386E452DA90E02009A00F6 /* NCAppVersionManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCAppVersionManager.swift; sourceTree = ""; }; F73CB3B122E072A000AD728E /* NCShareHeaderView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = NCShareHeaderView.xib; sourceTree = ""; }; F73CB5771ED46807005F2A5A /* NCBridgeSwift.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NCBridgeSwift.h; sourceTree = ""; }; - F73D11F9253C5F4800DF9BEC /* NCViewerNextcloudText.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = NCViewerNextcloudText.storyboard; sourceTree = ""; }; + F73D11F9253C5F4800DF9BEC /* NCViewerDirectEditing.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = NCViewerDirectEditing.storyboard; sourceTree = ""; }; F73EF7A62B0223900087E6E9 /* NCManageDatabase+Comments.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NCManageDatabase+Comments.swift"; sourceTree = ""; }; F73EF7B62B0224AB0087E6E9 /* NCManageDatabase+ExternalSites.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NCManageDatabase+ExternalSites.swift"; sourceTree = ""; }; F73EF7BE2B02250B0087E6E9 /* NCManageDatabase+GPS.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NCManageDatabase+GPS.swift"; sourceTree = ""; }; @@ -1438,6 +1439,7 @@ F758B457212C564000515F55 /* NCScan.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = NCScan.storyboard; sourceTree = ""; }; F758B45D212C569C00515F55 /* NCScanCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NCScanCell.swift; sourceTree = ""; }; F758B45F212C56A400515F55 /* NCScan.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NCScan.swift; sourceTree = ""; }; + F75A60542FB4493A00F8247E /* NCDirectEditorAdapter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCDirectEditorAdapter.swift; sourceTree = ""; }; F75A9EE523796C6F0044CFCE /* NCNetworking.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NCNetworking.swift; sourceTree = ""; }; F75B91E21ECAE17800199C96 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Localizable.strings; sourceTree = ""; }; F75B91F71ECAE26300199C96 /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-BR"; path = "pt-BR.lproj/Localizable.strings"; sourceTree = ""; }; @@ -2426,13 +2428,14 @@ path = Offline; sourceTree = ""; }; - F73D11FF253C5F5400DF9BEC /* NCViewerNextcloudText */ = { + F73D11FF253C5F5400DF9BEC /* NCViewerDirectEditing */ = { isa = PBXGroup; children = ( - F72D404823D2082500A97FD0 /* NCViewerNextcloudText.swift */, - F73D11F9253C5F4800DF9BEC /* NCViewerNextcloudText.storyboard */, + F75A60542FB4493A00F8247E /* NCDirectEditorAdapter.swift */, + F72D404823D2082500A97FD0 /* NCViewerDirectEditing.swift */, + F73D11F9253C5F4800DF9BEC /* NCViewerDirectEditing.storyboard */, ); - path = NCViewerNextcloudText; + path = NCViewerDirectEditing; sourceTree = ""; }; F74D3DB81BAC1941000BAE4B /* Networking */ = { @@ -2787,7 +2790,7 @@ F79018B1240962C7007C9B6D /* NCViewerMedia */, F723986A253C9C0E00257F49 /* NCViewerQuickLook */, F76D3CEF2428B3DD005DFA87 /* NCViewerPDF */, - F73D11FF253C5F5400DF9BEC /* NCViewerNextcloudText */, + F73D11FF253C5F5400DF9BEC /* NCViewerDirectEditing */, F7239861253C95D500257F49 /* NCViewerRichdocument */, ); path = Viewer; @@ -4007,7 +4010,7 @@ F704B5E32430AA6F00632F5F /* NCCreateFormUploadConflict.storyboard in Resources */, F7EDE509262DA9D600414FE6 /* NCSelectCommandViewSelect.xib in Resources */, F732D23327CF8AED000B0F1B /* NCPlayerToolBar.xib in Resources */, - F73D11FA253C5F4800DF9BEC /* NCViewerNextcloudText.storyboard in Resources */, + F73D11FA253C5F4800DF9BEC /* NCViewerDirectEditing.storyboard in Resources */, F7EDE51B262DD0C400414FE6 /* NCSelectCommandViewCopyMove.xib in Resources */, F7FF2CB12842159500EBB7A1 /* NCSectionHeader.xib in Resources */, F7D1612023CF19E30039EBBF /* NCViewerRichWorkspace.storyboard in Resources */, @@ -4561,7 +4564,7 @@ F7D60CAF2C941ACB008FBFDD /* NCMediaPinchGesture.swift in Sources */, F71916142E2901FB00E13E96 /* NCNetworking+Upload.swift in Sources */, F704B5E92430C0B800632F5F /* NCCreateFormUploadConflictCell.swift in Sources */, - F72D404923D2082500A97FD0 /* NCViewerNextcloudText.swift in Sources */, + F72D404923D2082500A97FD0 /* NCViewerDirectEditing.swift in Sources */, AFCE353927E5DE0500FEA6C2 /* Shareable.swift in Sources */, F77BB746289984CA0090FC19 /* UIViewController+Extension.swift in Sources */, F700510522DF6A89003A3356 /* NCShare.swift in Sources */, @@ -4802,6 +4805,7 @@ F7D61EA82EBF1694007F865B /* NCManageDatabase+TableCapabilities.swift in Sources */, F79FFB262A97C24A0055EEA4 /* NCNetworkingE2EEMarkFolder.swift in Sources */, F70D8D8124A4A9BF000A5756 /* NCNetworkingProcess.swift in Sources */, + F75A60552FB4493A00F8247E /* NCDirectEditorAdapter.swift in Sources */, F3A0479A2BD2668800658E7B /* NCAssistantTaskDetail.swift in Sources */, F71D2FB72E09BBD700B751CC /* NCAutoUploadModel.swift in Sources */, F38F71252B6BBDC300473CDC /* NCCollectionViewCommonSelectTabBar.swift in Sources */, @@ -6150,8 +6154,8 @@ isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/nextcloud/NextcloudKit"; requirement = { - kind = exactVersion; - version = 7.3.1; + branch = main; + kind = branch; }; }; F788ECC5263AAAF900ADC67F /* XCRemoteSwiftPackageReference "MarkdownKit" */ = { diff --git a/iOSClient/Data/NCManageDatabase+Metadata.swift b/iOSClient/Data/NCManageDatabase+Metadata.swift index bf9a829c4b..2e44150c79 100644 --- a/iOSClient/Data/NCManageDatabase+Metadata.swift +++ b/iOSClient/Data/NCManageDatabase+Metadata.swift @@ -259,9 +259,8 @@ extension tableMetadata { directEditingEditors.isEmpty { // RichDocument: Collabora return true - } else if directEditingEditors.contains("nextcloud text") || directEditingEditors.contains("onlyoffice") { - // DirectEditing: Nextcloud Text - OnlyOffice - return true + } else if !directEditingEditors.isEmpty { + return true } return false } @@ -282,12 +281,8 @@ extension tableMetadata { guard (classFile == NKTypeClassFile.document.rawValue) && NextcloudKit.shared.isNetworkReachable() else { return false } - let editors = NCUtility().editorsDirectEditing(account: account, contentType: contentType).map { $0.lowercased() } - - if editors.contains("nextcloud text") || editors.contains("onlyoffice") { - return true - } - return false + let editors = NCUtility().editorsDirectEditing(account: account, contentType: contentType) + return !editors.isEmpty } var isPDF: Bool { diff --git a/iOSClient/Main/Collection Common/NCCollectionViewCommon+UIEditMenuInteractionDelegate.swift b/iOSClient/Main/Collection Common/NCCollectionViewCommon+UIEditMenuInteractionDelegate.swift index 2733be4b87..279de6f3a5 100644 --- a/iOSClient/Main/Collection Common/NCCollectionViewCommon+UIEditMenuInteractionDelegate.swift +++ b/iOSClient/Main/Collection Common/NCCollectionViewCommon+UIEditMenuInteractionDelegate.swift @@ -3,6 +3,7 @@ // SPDX-License-Identifier: GPL-3.0-or-later import UIKit +import UniformTypeIdentifiers import NextcloudKit import RealmSwift import LucidBanner @@ -70,7 +71,14 @@ extension NCCollectionViewCommon: UIEditMenuInteractionDelegate { for (index, items) in UIPasteboard.general.items.enumerated() { for item in items { let capabilities = await NKCapabilities.shared.getCapabilities(for: session.account) - let results = NKFilePropertyResolver().resolve(inUTI: item.key, capabilities: capabilities) + let identifier = item.key + let resolvedType = UTType(mimeType: identifier) ?? UTType(identifier) + let resolvedMimeType = resolvedType?.preferredMIMEType ?? identifier + let resolvedExtension = resolvedType?.preferredFilenameExtension ?? "" + let results = NKFilePropertyResolver().resolve(mimeType: resolvedMimeType, + fileExtension: resolvedExtension, + typeIdentifier: resolvedType?.identifier ?? identifier, + capabilities: capabilities) guard let data = UIPasteboard.general.data(forPasteboardType: item.key, inItemSet: IndexSet([index]))?.first else { diff --git a/iOSClient/Main/Create/NCCreate.swift b/iOSClient/Main/Create/NCCreate.swift index d4042e2e92..5db2c8818e 100644 --- a/iOSClient/Main/Create/NCCreate.swift +++ b/iOSClient/Main/Create/NCCreate.swift @@ -25,12 +25,8 @@ class NCCreate: NSObject { var options = NKRequestOptions() let serverUrl = controller.currentServerUrl() - if let creatorId, editorId == "text" || editorId == "onlyoffice" { - if editorId == "onlyoffice" { - options = NKRequestOptions(customUserAgent: NCUtility().getCustomUserAgentOnlyOffice()) - } else if editorId == "text" { - options = NKRequestOptions(customUserAgent: NCUtility().getCustomUserAgentNCText()) - } + if let creatorId, let adapter = NCDirectEditorAdapter.resolve(from: [editorId]) { + options = NKRequestOptions(customUserAgent: adapter.userAgent(utility)) let results = await NextcloudKit.shared.textCreateFileAsync(fileNamePath: fileNamePath, editorId: editorId, creatorId: creatorId, templateId: templateId, account: account, options: options) { task in Task { let identifier = await NCNetworking.shared.networkingTasks.createIdentifier(account: account, @@ -94,13 +90,8 @@ class NCCreate: NSObject { var selectedTemplate = NKEditorTemplate() var ext: String = "" - if editorId == "text" || editorId == "onlyoffice" { - var options = NKRequestOptions() - if editorId == "onlyoffice" { - options = NKRequestOptions(customUserAgent: NCUtility().getCustomUserAgentOnlyOffice()) - } else if editorId == "text" { - options = NKRequestOptions(customUserAgent: NCUtility().getCustomUserAgentNCText()) - } + if let adapter = NCDirectEditorAdapter.resolve(from: [editorId]) { + let options = NKRequestOptions(customUserAgent: adapter.userAgent(NCUtility())) let results = await NextcloudKit.shared.textGetListOfTemplatesAsync(account: account, options: options) { task in Task { @@ -128,15 +119,7 @@ class NCCreate: NSObject { if templates.isEmpty { var temp = NKEditorTemplate() temp.identifier = "" - if editorId == "text" { - temp.ext = "md" - } else if editorId == "onlyoffice" && templateId == "document" { - temp.ext = "docx" - } else if editorId == "onlyoffice" && templateId == "spreadsheet" { - temp.ext = "xlsx" - } else if editorId == "onlyoffice" && templateId == "presentation" { - temp.ext = "pptx" - } + temp.ext = adapter.defaultExt(templateId) temp.name = "Empty" temp.preview = "" templates.append(temp) diff --git a/iOSClient/Main/NCMainNavigationController.swift b/iOSClient/Main/NCMainNavigationController.swift index beb91f757e..efc12f1e7f 100644 --- a/iOSClient/Main/NCMainNavigationController.swift +++ b/iOSClient/Main/NCMainNavigationController.swift @@ -294,7 +294,7 @@ class NCMainNavigationController: UINavigationController, UINavigationController !(topViewController is NCViewerMediaPage), !(topViewController is NCViewerPDF), !(topViewController is NCViewerRichDocument), - !(topViewController is NCViewerNextcloudText) + !(topViewController is NCViewerDirectEditing) else { return } diff --git a/iOSClient/Menu/NCContextMenuPlus.swift b/iOSClient/Menu/NCContextMenuPlus.swift index 2d1cdefdbb..0782aed87d 100644 --- a/iOSClient/Menu/NCContextMenuPlus.swift +++ b/iOSClient/Menu/NCContextMenuPlus.swift @@ -8,6 +8,13 @@ import NextcloudKit @MainActor class NCContextMenuPlus: NSObject { + struct CreatorMenuInfo { + let titleKey: String + let templateId: String + let icon: String + let sortOrder: Int + } + let menuToolbar: UIToolbar? let controller: NCMainTabBarController? @@ -20,6 +27,19 @@ class NCContextMenuPlus: NSObject { self.controller = controller } + nonisolated static func menuInfo(for ext: String) -> CreatorMenuInfo? { + switch ext.lowercased() { + case "docx": + return CreatorMenuInfo(titleKey: "_create_new_document_", templateId: "document", icon: "doc.text", sortOrder: 0) + case "xlsx": + return CreatorMenuInfo(titleKey: "_create_new_spreadsheet_", templateId: "spreadsheet", icon: "tablecells", sortOrder: 1) + case "pptx": + return CreatorMenuInfo(titleKey: "_create_new_presentation_", templateId: "presentation", icon: "play.rectangle", sortOrder: 2) + default: + return nil + } + } + func create(session: NCSession.Session) async { guard let controller, let menuToolbar else { return @@ -38,7 +58,7 @@ class NCContextMenuPlus: NSObject { var menuActionElement: [UIMenuElement] = [] var menuE2EEElement: [UIMenuElement] = [] var menuTextElement: [UIMenuElement] = [] - var menuOnlyOfficeElement: [UIMenuElement] = [] + var menuDirectEditingElement: [UIMenuElement] = [] var menuRichDocumentElement: [UIMenuElement] = [] // ------------------------------- ACTION @@ -214,59 +234,53 @@ class NCContextMenuPlus: NSObject { }) } - // ------------------------------- ONLY OFFICE + // ------------------------------- DIRECT EDITING CREATORS (onlyoffice, eurooffice, …) - if let creator = capabilities.directEditingCreators.first(where: { $0.editor == "onlyoffice" && $0.identifier == "onlyoffice_docx"}) { - menuOnlyOfficeElement.append(UIAction(title: NSLocalizedString("_create_new_document_", comment: ""), - image: utility.loadImage(named: "doc.text", colors: [NCBrandColor.shared.documentIconColor])) { _ in - Task { @MainActor in - let createDocument = NCCreate() - let templates = await createDocument.getTemplate(editorId: "onlyoffice", templateId: "document", account: session.account) - let fileName = await NCNetworking.shared.createFileName(fileNameBase: NSLocalizedString("_untitled_", comment: "") + "." + templates.ext, account: session.account, serverUrl: serverUrl) - let fileNamePath = utilityFileSystem.getRelativeFilePath(String(describing: fileName), serverUrl: serverUrl, session: session) + let creatorsByEditor = Dictionary(grouping: capabilities.directEditingCreators, by: \.editor) + for editorId in creatorsByEditor.keys.sorted() { + guard NCDirectEditorAdapter.resolve(from: [editorId]) != nil, + editorId != "text" else { continue } - await createDocument.createDocument(controller: controller, fileNamePath: fileNamePath, fileName: String(describing: fileName), editorId: "onlyoffice", creatorId: creator.identifier, templateId: templates.selectedTemplate.identifier, account: session.account) + let sortedCreators = creatorsByEditor[editorId]! + .compactMap { creator -> (NKEditorDetailsCreator, CreatorMenuInfo)? in + guard let info = NCContextMenuPlus.menuInfo(for: creator.ext) else { return nil } + return (creator, info) } - }) - } - - if let creator = capabilities.directEditingCreators.first(where: { $0.editor == "onlyoffice" && $0.identifier == "onlyoffice_xlsx"}) { - menuOnlyOfficeElement.append(UIAction(title: NSLocalizedString("_create_new_spreadsheet_", comment: ""), - image: utility.loadImage(named: "tablecells", colors: [NCBrandColor.shared.spreadsheetIconColor])) { _ in - Task { @MainActor in - let createDocument = NCCreate() - let templates = await createDocument.getTemplate(editorId: "onlyoffice", templateId: "spreadsheet", account: session.account) - let fileName = await NCNetworking.shared.createFileName(fileNameBase: NSLocalizedString("_untitled_", comment: "") + "." + templates.ext, account: session.account, serverUrl: serverUrl) - let fileNamePath = utilityFileSystem.getRelativeFilePath(String(describing: fileName), serverUrl: serverUrl, session: session) - - await createDocument.createDocument(controller: controller, fileNamePath: fileNamePath, fileName: String(describing: fileName), editorId: "onlyoffice", creatorId: creator.identifier, templateId: templates.selectedTemplate.identifier, account: session.account) - } - - }) - } - - if let creator = capabilities.directEditingCreators.first(where: { $0.editor == "onlyoffice" && $0.identifier == "onlyoffice_pptx"}) { - menuOnlyOfficeElement.append(UIAction(title: NSLocalizedString("_create_new_presentation_", comment: ""), - image: utility.loadImage(named: "play.rectangle", colors: [NCBrandColor.shared.presentationIconColor])) { _ in - Task { @MainActor in - let createDocument = NCCreate() - let templates = await createDocument.getTemplate(editorId: "onlyoffice", templateId: "presentation", account: session.account) - let fileName = await NCNetworking.shared.createFileName(fileNameBase: NSLocalizedString("_untitled_", comment: "") + "." + templates.ext, account: session.account, serverUrl: serverUrl) - let fileNamePath = utilityFileSystem.getRelativeFilePath(String(describing: fileName), serverUrl: serverUrl, session: session) - - await createDocument.createDocument(controller: controller, fileNamePath: fileNamePath, fileName: String(describing: fileName), editorId: "onlyoffice", creatorId: creator.identifier, templateId: templates.selectedTemplate.identifier, account: session.account) - } - }) + .sorted { $0.1.sortOrder < $1.1.sortOrder } + + for (creator, info) in sortedCreators { + menuDirectEditingElement.append(UIAction( + title: NSLocalizedString(info.titleKey, comment: ""), + image: utility.loadImage(named: info.icon, colors: [info.iconColor]) + ) { _ in + Task { @MainActor in + let createDocument = NCCreate() + let fileExt: String + let templateIdentifier: String + if creator.templates { + let result = await createDocument.getTemplate(editorId: editorId, templateId: info.templateId, account: session.account) + fileExt = result.ext + templateIdentifier = result.selectedTemplate.identifier + } else { + fileExt = creator.ext + templateIdentifier = "" + } + let fileName = await NCNetworking.shared.createFileName(fileNameBase: NSLocalizedString("_untitled_", comment: "") + "." + fileExt, account: session.account, serverUrl: serverUrl) + let fileNamePath = utilityFileSystem.getRelativeFilePath(String(describing: fileName), serverUrl: serverUrl, session: session) + await createDocument.createDocument(controller: controller, fileNamePath: fileNamePath, fileName: String(describing: fileName), editorId: editorId, creatorId: creator.identifier, templateId: templateIdentifier, account: session.account) + } + }) + } } } let menuAction = UIMenu(title: "", options: .displayInline, children: menuActionElement) let menuText = UIMenu(title: "", options: .displayInline, children: menuTextElement) let menuE2EE = UIMenu(title: "", options: .displayInline, children: menuE2EEElement) - let menuOnlyOffice = UIMenu(title: "", options: .displayInline, children: menuOnlyOfficeElement) + let menuDirectEditing = UIMenu(title: "", options: .displayInline, children: menuDirectEditingElement) let menuRichDocument = UIMenu(title: "", options: .displayInline, children: menuRichDocumentElement) - let plusMenu = UIMenu(children: [menuAction, menuE2EE, menuText, menuRichDocument, menuOnlyOffice]) + let plusMenu = UIMenu(children: [menuAction, menuE2EE, menuText, menuRichDocument, menuDirectEditing]) let config = UIImage.SymbolConfiguration(pointSize: 25, weight: .thin) let plusImage = UIImage(systemName: "plus.circle.fill", withConfiguration: config) @@ -342,3 +356,14 @@ class NCContextMenuPlus: NSObject { } } } + +@MainActor +extension NCContextMenuPlus.CreatorMenuInfo { + var iconColor: UIColor { + switch templateId { + case "spreadsheet": return NCBrandColor.shared.spreadsheetIconColor + case "presentation": return NCBrandColor.shared.presentationIconColor + default: return NCBrandColor.shared.documentIconColor + } + } +} diff --git a/iOSClient/Utility/NCUtility+Image.swift b/iOSClient/Utility/NCUtility+Image.swift index d427cc5c86..4c4f747681 100644 --- a/iOSClient/Utility/NCUtility+Image.swift +++ b/iOSClient/Utility/NCUtility+Image.swift @@ -33,6 +33,7 @@ extension NCUtility { case NKTypeIconFile.txt.rawValue: image = UIImage(systemName: "doc.text", withConfiguration: UIImage.SymbolConfiguration(weight: .thin))?.applyingSymbolConfiguration(UIImage.SymbolConfiguration(paletteColors: [NCBrandColor.shared.iconImageColor2])) case NKTypeIconFile.url.rawValue: image = UIImage(systemName: "network", withConfiguration: UIImage.SymbolConfiguration(weight: .thin))?.applyingSymbolConfiguration(UIImage.SymbolConfiguration(paletteColors: [NCBrandColor.shared.iconImageColor2])) case NKTypeIconFile.xls.rawValue: image = UIImage(systemName: "tablecells", withConfiguration: UIImage.SymbolConfiguration(weight: .thin))?.applyingSymbolConfiguration(UIImage.SymbolConfiguration(paletteColors: [NCBrandColor.shared.spreadsheetIconColor])) + case NKTypeIconFile.draw.rawValue: image = UIImage(systemName: "pencil.and.scribble", withConfiguration: UIImage.SymbolConfiguration(weight: .thin))?.applyingSymbolConfiguration(UIImage.SymbolConfiguration(paletteColors: [NCBrandColor.shared.iconImageColor2])) default: image = UIImage(systemName: "doc", withConfiguration: UIImage.SymbolConfiguration(weight: .thin))?.applyingSymbolConfiguration(UIImage.SymbolConfiguration(paletteColors: [NCBrandColor.shared.iconImageColor2])) } } diff --git a/iOSClient/Utility/NCUtility.swift b/iOSClient/Utility/NCUtility.swift index 0a36f11662..e64b90735c 100644 --- a/iOSClient/Utility/NCUtility.swift +++ b/iOSClient/Utility/NCUtility.swift @@ -39,32 +39,32 @@ final class NCUtility: NSObject, Sendable { } func editorsDirectEditing(account: String, contentType: String) -> [String] { - var names: [String] = [] + var identifiers: [String] = [] let capabilities = NCNetworking.shared.capabilities[account] capabilities?.directEditingEditors.forEach { editor in editor.mimetypes.forEach { mimetype in if mimetype == contentType { - names.append(editor.name) + identifiers.append(editor.identifier) } // HARDCODE // https://github.com/nextcloud/text/issues/913 if mimetype == "text/markdown" && contentType == "text/x-markdown" { - names.append(editor.name) + identifiers.append(editor.identifier) } if contentType == "text/html" { - names.append(editor.name) + identifiers.append(editor.identifier) } } editor.optionalMimetypes.forEach { mimetype in if mimetype == contentType { - names.append(editor.name) + identifiers.append(editor.identifier) } } } - return Array(Set(names)) + return Array(Set(identifiers)) } func getCustomUserAgentNCText() -> String { diff --git a/iOSClient/Viewer/NCViewer.swift b/iOSClient/Viewer/NCViewer.swift index 6689927a39..353787937d 100644 --- a/iOSClient/Viewer/NCViewer.swift +++ b/iOSClient/Viewer/NCViewer.swift @@ -58,6 +58,7 @@ class NCViewer: NSObject { // DOCUMENTS else if metadata.classFile == NKTypeClassFile.document.rawValue, !NCUtilityFileSystem().isDirectoryE2EE(serverUrl: metadata.serverUrl, urlBase: session.urlBase, userId: session.userId, account: session.account) { + // PDF if metadata.isPDF { let vc = UIStoryboard(name: "NCViewerPDF", bundle: nil).instantiateInitialViewController() as? NCViewerPDF @@ -68,16 +69,26 @@ class NCViewer: NSObject { return vc } - // RichDocument: Collabora - if metadata.isAvailableRichDocumentEditorView { + + // DirectEditing + if metadata.isAvailableDirectEditingEditorView { + let editors = utility.editorsDirectEditing(account: metadata.account, contentType: metadata.contentType).map { $0.lowercased() } + guard let editorAdapter = NCDirectEditorAdapter.resolve(from: editors) else { + self.QLPreview(metadata: metadata, delegate: delegate) + return nil + } + let editor = editorAdapter.apiKey + let editorViewController = editorAdapter.viewControllerEditor + let options = NKRequestOptions(customUserAgent: editorAdapter.userAgent(utility)) if metadata.url.isEmpty { + let fileNamePath = utilityFileSystem.getRelativeFilePath(metadata.fileName, serverUrl: metadata.serverUrl, session: session) NCActivityIndicator.shared.start(backgroundView: delegate?.view) - let results = await NextcloudKit.shared.createUrlRichdocumentsAsync(fileID: metadata.fileId, account: metadata.account) { task in + let results = await NextcloudKit.shared.textOpenFileAsync(fileNamePath: fileNamePath, editor: editor, account: metadata.account, options: options) { task in Task { let identifier = await NCNetworking.shared.networkingTasks.createIdentifier(account: metadata.account, - path: metadata.fileId, - name: "createUrlRichdocuments") + path: fileNamePath, + name: "textOpenFile") await NCNetworking.shared.networkingTasks.track(identifier: identifier, task: task) } } @@ -89,19 +100,20 @@ class NCViewer: NSObject { return nil } - let vc = UIStoryboard(name: "NCViewerRichdocument", bundle: nil).instantiateInitialViewController() as? NCViewerRichDocument + let vc = UIStoryboard(name: "NCViewerDirectEditing", bundle: nil).instantiateInitialViewController() as? NCViewerDirectEditing vc?.metadata = metadata + vc?.editor = editorViewController vc?.link = url vc?.imageIcon = image vc?.navigationItem.setBidiSafeTitle(metadata.fileNameView) return vc - } else { - let vc = UIStoryboard(name: "NCViewerRichdocument", bundle: nil).instantiateInitialViewController() as? NCViewerRichDocument + let vc = UIStoryboard(name: "NCViewerDirectEditing", bundle: nil).instantiateInitialViewController() as? NCViewerDirectEditing vc?.metadata = metadata + vc?.editor = editorViewController vc?.link = metadata.url vc?.imageIcon = image vc?.navigationItem.setBidiSafeTitle(metadata.fileNameView) @@ -109,30 +121,16 @@ class NCViewer: NSObject { return vc } } - // DirectEditing: Nextcloud Text - OnlyOffice - if metadata.isAvailableDirectEditingEditorView { - var options = NKRequestOptions() - var editor = "" - var editorViewController = "" - let editors = utility.editorsDirectEditing(account: metadata.account, contentType: metadata.contentType).map { $0.lowercased() } - if editors.contains("nextcloud text") { - editor = "text" - editorViewController = "nextcloud text" - options = NKRequestOptions(customUserAgent: utility.getCustomUserAgentNCText()) - } else if editors.contains("onlyoffice") { - editor = "onlyoffice" - editorViewController = "onlyoffice" - options = NKRequestOptions(customUserAgent: utility.getCustomUserAgentOnlyOffice()) - } - if metadata.url.isEmpty { - let fileNamePath = utilityFileSystem.getRelativeFilePath(metadata.fileName, serverUrl: metadata.serverUrl, session: session) + // RichDocument: Collabora + if metadata.isAvailableRichDocumentEditorView { + if metadata.url.isEmpty { NCActivityIndicator.shared.start(backgroundView: delegate?.view) - let results = await NextcloudKit.shared.textOpenFileAsync(fileNamePath: fileNamePath, editor: editor, account: metadata.account, options: options) { task in + let results = await NextcloudKit.shared.createUrlRichdocumentsAsync(fileID: metadata.fileId, account: metadata.account) { task in Task { let identifier = await NCNetworking.shared.networkingTasks.createIdentifier(account: metadata.account, - path: fileNamePath, - name: "textOpenFile") + path: metadata.fileId, + name: "createUrlRichdocuments") await NCNetworking.shared.networkingTasks.track(identifier: identifier, task: task) } } @@ -144,33 +142,31 @@ class NCViewer: NSObject { return nil } - let vc = UIStoryboard(name: "NCViewerNextcloudText", bundle: nil).instantiateInitialViewController() as? NCViewerNextcloudText + let vc = UIStoryboard(name: "NCViewerRichdocument", bundle: nil).instantiateInitialViewController() as? NCViewerRichDocument vc?.metadata = metadata - vc?.editor = editorViewController vc?.link = url vc?.imageIcon = image vc?.navigationItem.setBidiSafeTitle(metadata.fileNameView) return vc + } else { - let vc = UIStoryboard(name: "NCViewerNextcloudText", bundle: nil).instantiateInitialViewController() as? NCViewerNextcloudText + let vc = UIStoryboard(name: "NCViewerRichdocument", bundle: nil).instantiateInitialViewController() as? NCViewerRichDocument vc?.metadata = metadata - vc?.editor = editorViewController vc?.link = metadata.url vc?.imageIcon = image vc?.navigationItem.setBidiSafeTitle(metadata.fileNameView) return vc } - } else { - self.QLPreview(metadata: metadata, delegate: delegate) } - } else { - self.QLPreview(metadata: metadata, delegate: delegate) } + // iOS QL-Preview + self.QLPreview(metadata: metadata, delegate: delegate) + return nil } diff --git a/iOSClient/Viewer/NCViewerDirectEditing/NCDirectEditorAdapter.swift b/iOSClient/Viewer/NCViewerDirectEditing/NCDirectEditorAdapter.swift new file mode 100644 index 0000000000..15cc9a33ac --- /dev/null +++ b/iOSClient/Viewer/NCViewerDirectEditing/NCDirectEditorAdapter.swift @@ -0,0 +1,58 @@ +// SPDX-FileCopyrightText: Nextcloud GmbH +// SPDX-License-Identifier: GPL-3.0-or-later + +import Foundation + +struct NCDirectEditorAdapter { + /// Editor ID passed to the textOpenFile API. + let apiKey: String + /// Value set on NCViewerNextcloudText.editor — controls user agent and JS behaviour. + let viewControllerEditor: String + /// Resolves the custom user agent string via NCUtility. + let userAgent: (NCUtility) -> String + /// Returns the fallback file extension for a given templateId when the template API returns no templates. + let defaultExt: (_ templateId: String) -> String + + /// Lookup an adapter for the first matching editor ID in the provided list. + /// The list should already be lowercased. + static func resolve(from editors: [String]) -> NCDirectEditorAdapter? { + editors.lazy.compactMap { registry[$0.lowercased()] }.first + } + + // MARK: - Registry + + private static func officeDefaultExt(_ templateId: String) -> String { + switch templateId { + case "spreadsheet": return "xlsx" + case "presentation": return "pptx" + default: return "docx" + } + } + + private static let registry: [String: NCDirectEditorAdapter] = [ + "text": NCDirectEditorAdapter( + apiKey: "text", + viewControllerEditor: "nextcloud text", + userAgent: { $0.getCustomUserAgentNCText() }, + defaultExt: { _ in "md" } + ), + "onlyoffice": NCDirectEditorAdapter( + apiKey: "onlyoffice", + viewControllerEditor: "onlyoffice", + userAgent: { $0.getCustomUserAgentOnlyOffice() }, + defaultExt: officeDefaultExt + ), + "eurooffice": NCDirectEditorAdapter( + apiKey: "eurooffice", + viewControllerEditor: "onlyoffice", + userAgent: { $0.getCustomUserAgentOnlyOffice() }, + defaultExt: officeDefaultExt + ), + "whiteboard": NCDirectEditorAdapter( + apiKey: "whiteboard", + viewControllerEditor: "onlyoffice", + userAgent: { $0.getCustomUserAgentOnlyOffice() }, + defaultExt: { _ in "whiteboard" } + ) + ] +} diff --git a/iOSClient/Viewer/NCViewerNextcloudText/NCViewerNextcloudText.storyboard b/iOSClient/Viewer/NCViewerDirectEditing/NCViewerDirectEditing.storyboard similarity index 91% rename from iOSClient/Viewer/NCViewerNextcloudText/NCViewerNextcloudText.storyboard rename to iOSClient/Viewer/NCViewerDirectEditing/NCViewerDirectEditing.storyboard index 959209506b..e90c459511 100644 --- a/iOSClient/Viewer/NCViewerNextcloudText/NCViewerNextcloudText.storyboard +++ b/iOSClient/Viewer/NCViewerDirectEditing/NCViewerDirectEditing.storyboard @@ -1,17 +1,17 @@ - + - + - + - + diff --git a/iOSClient/Viewer/NCViewerNextcloudText/NCViewerNextcloudText.swift b/iOSClient/Viewer/NCViewerDirectEditing/NCViewerDirectEditing.swift similarity index 98% rename from iOSClient/Viewer/NCViewerNextcloudText/NCViewerNextcloudText.swift rename to iOSClient/Viewer/NCViewerDirectEditing/NCViewerDirectEditing.swift index 577f55ea76..90fef2de6a 100644 --- a/iOSClient/Viewer/NCViewerNextcloudText/NCViewerNextcloudText.swift +++ b/iOSClient/Viewer/NCViewerDirectEditing/NCViewerDirectEditing.swift @@ -6,7 +6,7 @@ import UIKit import NextcloudKit @preconcurrency import WebKit -class NCViewerNextcloudText: UIViewController, WKNavigationDelegate, WKScriptMessageHandler, WKUIDelegate { +class NCViewerDirectEditing: UIViewController, WKNavigationDelegate, WKScriptMessageHandler, WKUIDelegate { var webView = WKWebView() var bottomConstraint: NSLayoutConstraint? var link: String = "" @@ -223,7 +223,7 @@ class NCViewerNextcloudText: UIViewController, WKNavigationDelegate, WKScriptMes } } -extension NCViewerNextcloudText: UINavigationControllerDelegate { +extension NCViewerDirectEditing: UINavigationControllerDelegate { override func didMove(toParent parent: UIViewController?) { super.didMove(toParent: parent) @@ -237,7 +237,7 @@ extension NCViewerNextcloudText: UINavigationControllerDelegate { } } -extension NCViewerNextcloudText: NCTransferDelegate { +extension NCViewerDirectEditing: NCTransferDelegate { func transferReloadData(serverUrl: String?) { } func transferReloadDataSource(serverUrl: String?, requestData: Bool, status: Int?) { } From 8498102d6531f77b203c352f246502c484ab71c2 Mon Sep 17 00:00:00 2001 From: Marino Faggiana Date: Wed, 13 May 2026 13:37:20 +0200 Subject: [PATCH 11/22] added inputText Signed-off-by: Marino Faggiana --- iOSClient/Assistant/NCAssistant.swift | 2 +- iOSClient/Assistant/NCAssistantModel.swift | 2 +- iOSClient/SceneDelegate.swift | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/iOSClient/Assistant/NCAssistant.swift b/iOSClient/Assistant/NCAssistant.swift index 239c59cb52..f458e6a992 100644 --- a/iOSClient/Assistant/NCAssistant.swift +++ b/iOSClient/Assistant/NCAssistant.swift @@ -90,7 +90,7 @@ struct NCAssistant: View { #Preview { @Previewable @State var chatModel = NCAssistantChatModel(controller: nil) - let model = NCAssistantModel(controller: nil) + let model = NCAssistantModel(controller: nil, inputText: "") let conversationsModel = NCAssistantChatConversationsModel(controller: nil) NCAssistant(assistantModel: model, chatModel: chatModel, conversationsModel: conversationsModel) diff --git a/iOSClient/Assistant/NCAssistantModel.swift b/iOSClient/Assistant/NCAssistantModel.swift index 3a6640e376..8951616d08 100644 --- a/iOSClient/Assistant/NCAssistantModel.swift +++ b/iOSClient/Assistant/NCAssistantModel.swift @@ -26,7 +26,7 @@ class NCAssistantModel { @ObservationIgnored private let chatTypeId = "core:text2text:chat" @ObservationIgnored var isSelectedTypeChat: Bool { selectedType?.id == chatTypeId } - init(controller: NCMainTabBarController?) { + init(controller: NCMainTabBarController?, inputText: String = "") { self.controller = controller session = NCSession.shared.getSession(controller: controller) let capabilities = NCNetworking.shared.capabilities[session.account] ?? NKCapabilities.Capabilities() diff --git a/iOSClient/SceneDelegate.swift b/iOSClient/SceneDelegate.swift index 3a79a15c3e..53e3770c36 100644 --- a/iOSClient/SceneDelegate.swift +++ b/iOSClient/SceneDelegate.swift @@ -347,7 +347,7 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { Task { @MainActor in let capabilities = await NKCapabilities.shared.getCapabilities(for: controller.account) if capabilities.assistantEnabled { - let assistant = NCAssistant(assistantModel: NCAssistantModel(controller: controller), chatModel: NCAssistantChatModel(controller: controller), conversationsModel: NCAssistantChatConversationsModel(controller: controller)) + let assistant = NCAssistant(assistantModel: NCAssistantModel(controller: controller, inputText: text), chatModel: NCAssistantChatModel(controller: controller), conversationsModel: NCAssistantChatConversationsModel(controller: controller)) let hostingController = UIHostingController(rootView: assistant) controller.present(hostingController, animated: true, completion: nil) } From d292afb5cffa2bd016754f2b2cffa370f5b46346 Mon Sep 17 00:00:00 2001 From: Marino Faggiana Date: Wed, 13 May 2026 13:53:37 +0200 Subject: [PATCH 12/22] inputText Signed-off-by: Marino Faggiana --- iOSClient/Assistant/Chat/NCAssistantChat.swift | 2 +- iOSClient/Assistant/Chat/NCAssistantChatModel.swift | 4 +++- iOSClient/Assistant/Components/ChatInputField.swift | 8 ++++---- iOSClient/Assistant/NCAssistant.swift | 2 +- iOSClient/Assistant/NCAssistantModel.swift | 2 ++ iOSClient/Main/NCMainNavigationController.swift | 2 +- iOSClient/SceneDelegate.swift | 2 +- 7 files changed, 13 insertions(+), 9 deletions(-) diff --git a/iOSClient/Assistant/Chat/NCAssistantChat.swift b/iOSClient/Assistant/Chat/NCAssistantChat.swift index b256478acc..2d82ab716f 100644 --- a/iOSClient/Assistant/Chat/NCAssistantChat.swift +++ b/iOSClient/Assistant/Chat/NCAssistantChat.swift @@ -23,7 +23,7 @@ struct NCAssistantChat: View { } .safeAreaInset(edge: .bottom) { - ChatInputField(isLoading: $chatModel.isSending, isDisabled: $chatModel.isSendingDisabled) { input in + ChatInputField(inputText: chatModel.inputText, isLoading: $chatModel.isSending, isDisabled: $chatModel.isSendingDisabled) { input in if chatModel.selectedConversation != nil { chatModel.sendMessage(input: input) } else { diff --git a/iOSClient/Assistant/Chat/NCAssistantChatModel.swift b/iOSClient/Assistant/Chat/NCAssistantChatModel.swift index e29e34e8db..498c101c9e 100644 --- a/iOSClient/Assistant/Chat/NCAssistantChatModel.swift +++ b/iOSClient/Assistant/Chat/NCAssistantChatModel.swift @@ -8,6 +8,7 @@ import NextcloudKit @Observable class NCAssistantChatModel { var messages: [AssistantChatMessage] = [] + var inputText: String = "" var isSending: Bool = false var isThinking: Bool = false var isSendingDisabled = false @@ -28,10 +29,11 @@ class NCAssistantChatModel { SceneManager.shared.getWindowScene(controller: controller) } - init(controller: NCMainTabBarController?, messages: [AssistantChatMessage] = []) { + init(controller: NCMainTabBarController?, messages: [AssistantChatMessage] = [], inputText: String = "") { self.controller = controller self.ncSession = NCSession.shared.getSession(controller: controller) self.messages = messages + self.inputText = inputText } func startPollingForResponse(interval: TimeInterval = 4.0) { diff --git a/iOSClient/Assistant/Components/ChatInputField.swift b/iOSClient/Assistant/Components/ChatInputField.swift index 421329ab82..c11cc86677 100644 --- a/iOSClient/Assistant/Components/ChatInputField.swift +++ b/iOSClient/Assistant/Components/ChatInputField.swift @@ -11,8 +11,8 @@ struct ChatInputField: View { @Binding var isDisabled: Bool var onSend: ((_ input: String) -> Void)? - init(input: String = "", isLoading: Binding = .constant(false), isDisabled: Binding = .constant(false), onSend: ((_: String) -> Void)? = nil) { - _text = State(initialValue: input) + init(inputText: String = "", isLoading: Binding = .constant(false), isDisabled: Binding = .constant(false), onSend: ((_: String) -> Void)? = nil) { + _text = State(initialValue: inputText) _isLoading = isLoading _isDisabled = isDisabled self.onSend = onSend @@ -61,6 +61,6 @@ struct ChatInputField: View { } #Preview { - ChatInputField(input: "Text received from outside", isLoading: .constant(false)) - ChatInputField(input: "Loading text", isLoading: .constant(true)) + ChatInputField(inputText: "Text received from outside", isLoading: .constant(false)) + ChatInputField(inputText: "Loading text", isLoading: .constant(true)) } diff --git a/iOSClient/Assistant/NCAssistant.swift b/iOSClient/Assistant/NCAssistant.swift index f458e6a992..8c4af2cac5 100644 --- a/iOSClient/Assistant/NCAssistant.swift +++ b/iOSClient/Assistant/NCAssistant.swift @@ -182,7 +182,7 @@ struct TaskList: View { } } .safeAreaInset(edge: .bottom) { - ChatInputField(isLoading: $assistantModel.isLoading) { input in + ChatInputField(inputText: assistantModel.inputText, isLoading: $assistantModel.isLoading) { input in assistantModel.scheduleTask(input: input) } } diff --git a/iOSClient/Assistant/NCAssistantModel.swift b/iOSClient/Assistant/NCAssistantModel.swift index 8951616d08..7bd046d74f 100644 --- a/iOSClient/Assistant/NCAssistantModel.swift +++ b/iOSClient/Assistant/NCAssistantModel.swift @@ -18,6 +18,7 @@ class NCAssistantModel { var isLoading: Bool = false var isRefreshing: Bool = false var scrollTypeListToTop: Bool = false + var inputText: String = "" @ObservationIgnored let controller: NCMainTabBarController? @ObservationIgnored private var tasks: [AssistantTask] = [] @@ -28,6 +29,7 @@ class NCAssistantModel { init(controller: NCMainTabBarController?, inputText: String = "") { self.controller = controller + self.inputText = inputText session = NCSession.shared.getSession(controller: controller) let capabilities = NCNetworking.shared.capabilities[session.account] ?? NKCapabilities.Capabilities() diff --git a/iOSClient/Main/NCMainNavigationController.swift b/iOSClient/Main/NCMainNavigationController.swift index efc12f1e7f..c5b92ac092 100644 --- a/iOSClient/Main/NCMainNavigationController.swift +++ b/iOSClient/Main/NCMainNavigationController.swift @@ -83,7 +83,7 @@ class NCMainNavigationController: UINavigationController, UINavigationController assistantButtonItem.title = NSLocalizedString("_assistant_", comment: "") assistantButtonItem.tintColor = NCBrandColor.shared.iconImageColor assistantButtonItem.primaryAction = UIAction(handler: { _ in - let assistant = NCAssistant(assistantModel: NCAssistantModel(controller: self.controller), chatModel: NCAssistantChatModel(controller: self.controller), conversationsModel: NCAssistantChatConversationsModel(controller: self.controller)) + let assistant = NCAssistant(assistantModel: NCAssistantModel(controller: self.controller, inputText: "ciao ciao"), chatModel: NCAssistantChatModel(controller: self.controller, inputText: "ciao ciao"), conversationsModel: NCAssistantChatConversationsModel(controller: self.controller)) let hostingController = UIHostingController(rootView: assistant) self.present(hostingController, animated: true, completion: nil) }) diff --git a/iOSClient/SceneDelegate.swift b/iOSClient/SceneDelegate.swift index 53e3770c36..a8e81cbab2 100644 --- a/iOSClient/SceneDelegate.swift +++ b/iOSClient/SceneDelegate.swift @@ -347,7 +347,7 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { Task { @MainActor in let capabilities = await NKCapabilities.shared.getCapabilities(for: controller.account) if capabilities.assistantEnabled { - let assistant = NCAssistant(assistantModel: NCAssistantModel(controller: controller, inputText: text), chatModel: NCAssistantChatModel(controller: controller), conversationsModel: NCAssistantChatConversationsModel(controller: controller)) + let assistant = NCAssistant(assistantModel: NCAssistantModel(controller: controller, inputText: text), chatModel: NCAssistantChatModel(controller: controller, inputText: text), conversationsModel: NCAssistantChatConversationsModel(controller: controller)) let hostingController = UIHostingController(rootView: assistant) controller.present(hostingController, animated: true, completion: nil) } From 51f543fcd4913f2090b749cbfe7a4a5a197721a8 Mon Sep 17 00:00:00 2001 From: Marino Faggiana Date: Wed, 13 May 2026 14:28:18 +0200 Subject: [PATCH 13/22] ChatInputField Signed-off-by: Marino Faggiana --- .../Assistant/Chat/NCAssistantChat.swift | 2 +- .../Assistant/Chat/NCAssistantChatModel.swift | 4 +- .../Assistant/Components/ChatInputField.swift | 53 +++++++++++++++++-- iOSClient/Assistant/NCAssistant.swift | 4 +- iOSClient/Assistant/NCAssistantModel.swift | 4 +- 5 files changed, 57 insertions(+), 10 deletions(-) diff --git a/iOSClient/Assistant/Chat/NCAssistantChat.swift b/iOSClient/Assistant/Chat/NCAssistantChat.swift index 2d82ab716f..344d3fdc2f 100644 --- a/iOSClient/Assistant/Chat/NCAssistantChat.swift +++ b/iOSClient/Assistant/Chat/NCAssistantChat.swift @@ -23,7 +23,7 @@ struct NCAssistantChat: View { } .safeAreaInset(edge: .bottom) { - ChatInputField(inputText: chatModel.inputText, isLoading: $chatModel.isSending, isDisabled: $chatModel.isSendingDisabled) { input in + ChatInputField(text: $chatModel.text, initialText: $chatModel.inputText, isLoading: $chatModel.isSending, isDisabled: $chatModel.isSendingDisabled) { input in if chatModel.selectedConversation != nil { chatModel.sendMessage(input: input) } else { diff --git a/iOSClient/Assistant/Chat/NCAssistantChatModel.swift b/iOSClient/Assistant/Chat/NCAssistantChatModel.swift index 498c101c9e..7166333625 100644 --- a/iOSClient/Assistant/Chat/NCAssistantChatModel.swift +++ b/iOSClient/Assistant/Chat/NCAssistantChatModel.swift @@ -8,7 +8,6 @@ import NextcloudKit @Observable class NCAssistantChatModel { var messages: [AssistantChatMessage] = [] - var inputText: String = "" var isSending: Bool = false var isThinking: Bool = false var isSendingDisabled = false @@ -16,6 +15,9 @@ class NCAssistantChatModel { var showRetryResponseGenerationButton = false var showMessageNotSentError: Bool = false + var text: String = "" + var inputText: String + public private(set) var selectedConversation: AssistantConversation? var currentSession: AssistantSession? diff --git a/iOSClient/Assistant/Components/ChatInputField.swift b/iOSClient/Assistant/Components/ChatInputField.swift index c11cc86677..c22c880bd0 100644 --- a/iOSClient/Assistant/Components/ChatInputField.swift +++ b/iOSClient/Assistant/Components/ChatInputField.swift @@ -6,13 +6,24 @@ import SwiftUI struct ChatInputField: View { @FocusState private var isInputFocused: Bool - @State var text: String = "" + @State private var hasAppliedInitialText = false + + @Binding var text: String + @Binding var initialText: String @Binding var isLoading: Bool @Binding var isDisabled: Bool + var onSend: ((_ input: String) -> Void)? - init(inputText: String = "", isLoading: Binding = .constant(false), isDisabled: Binding = .constant(false), onSend: ((_: String) -> Void)? = nil) { - _text = State(initialValue: inputText) + init( + text: Binding = .constant(""), + initialText: Binding = .constant(""), + isLoading: Binding = .constant(false), + isDisabled: Binding = .constant(false), + onSend: ((_: String) -> Void)? = nil + ) { + _text = text + _initialText = initialText _isLoading = isLoading _isDisabled = isDisabled self.onSend = onSend @@ -57,10 +68,42 @@ struct ChatInputField: View { .padding(.top, 16) .padding(.bottom, 16) .background(.background) + .task { + applyInitialTextIfNeeded() + } + } + + private func applyInitialTextIfNeeded() { + guard !hasAppliedInitialText else { + return + } + + hasAppliedInitialText = true + + guard text.isEmpty, !initialText.isEmpty else { + return + } + + text = initialText + initialText = "" } } #Preview { - ChatInputField(inputText: "Text received from outside", isLoading: .constant(false)) - ChatInputField(inputText: "Loading text", isLoading: .constant(true)) + @Previewable @State var text = "" + @Previewable @State var initialText = "Text received from outside" + + VStack(spacing: 16) { + ChatInputField( + text: $text, + initialText: $initialText, + isLoading: .constant(false) + ) + + ChatInputField( + text: .constant("Loading state"), + initialText: .constant(""), + isLoading: .constant(true) + ) + } } diff --git a/iOSClient/Assistant/NCAssistant.swift b/iOSClient/Assistant/NCAssistant.swift index 8c4af2cac5..23e9894a1f 100644 --- a/iOSClient/Assistant/NCAssistant.swift +++ b/iOSClient/Assistant/NCAssistant.swift @@ -90,7 +90,7 @@ struct NCAssistant: View { #Preview { @Previewable @State var chatModel = NCAssistantChatModel(controller: nil) - let model = NCAssistantModel(controller: nil, inputText: "") + let model = NCAssistantModel(controller: nil) let conversationsModel = NCAssistantChatConversationsModel(controller: nil) NCAssistant(assistantModel: model, chatModel: chatModel, conversationsModel: conversationsModel) @@ -182,7 +182,7 @@ struct TaskList: View { } } .safeAreaInset(edge: .bottom) { - ChatInputField(inputText: assistantModel.inputText, isLoading: $assistantModel.isLoading) { input in + ChatInputField(text: $assistantModel.text, initialText: $assistantModel.inputText, isLoading: $assistantModel.isLoading) { input in assistantModel.scheduleTask(input: input) } } diff --git a/iOSClient/Assistant/NCAssistantModel.swift b/iOSClient/Assistant/NCAssistantModel.swift index 7bd046d74f..2036adee67 100644 --- a/iOSClient/Assistant/NCAssistantModel.swift +++ b/iOSClient/Assistant/NCAssistantModel.swift @@ -14,11 +14,13 @@ class NCAssistantModel { var selectedType: TaskTypeData? var selectedTask: AssistantTask? + var text: String = "" + var inputText: String + var hasError: Bool = false var isLoading: Bool = false var isRefreshing: Bool = false var scrollTypeListToTop: Bool = false - var inputText: String = "" @ObservationIgnored let controller: NCMainTabBarController? @ObservationIgnored private var tasks: [AssistantTask] = [] From 9702f5c8150f00356938f02ebe04b01ae2169734 Mon Sep 17 00:00:00 2001 From: Marino Faggiana Date: Wed, 13 May 2026 14:46:51 +0200 Subject: [PATCH 14/22] NCAssistantInputModel Signed-off-by: Marino Faggiana --- Nextcloud.xcodeproj/project.pbxproj | 4 ++++ iOSClient/Assistant/Chat/NCAssistantChat.swift | 10 +++++----- .../Assistant/Chat/NCAssistantChatModel.swift | 18 +++++++++++++----- .../Create Task/NCAssistantCreateNewTask.swift | 2 +- iOSClient/Assistant/NCAssistant.swift | 11 ++++++----- .../Assistant/NCAssistantInputModel.swift | 18 ++++++++++++++++++ iOSClient/Assistant/NCAssistantModel.swift | 18 +++++++++++++----- .../Task Detail/NCAssistantTaskDetail.swift | 2 +- .../Main/NCMainNavigationController.swift | 3 ++- iOSClient/SceneDelegate.swift | 3 ++- 10 files changed, 65 insertions(+), 24 deletions(-) create mode 100644 iOSClient/Assistant/NCAssistantInputModel.swift diff --git a/Nextcloud.xcodeproj/project.pbxproj b/Nextcloud.xcodeproj/project.pbxproj index e667c43d04..0cdb90fccf 100644 --- a/Nextcloud.xcodeproj/project.pbxproj +++ b/Nextcloud.xcodeproj/project.pbxproj @@ -741,6 +741,7 @@ F7C30DFE291BD0B80017149B /* NCNetworkingE2EEDelete.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7C30DFC291BD0B80017149B /* NCNetworkingE2EEDelete.swift */; }; F7C30E00291BD2610017149B /* NCNetworkingE2EERename.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7C30DFF291BD2610017149B /* NCNetworkingE2EERename.swift */; }; F7C30E01291BD2610017149B /* NCNetworkingE2EERename.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7C30DFF291BD2610017149B /* NCNetworkingE2EERename.swift */; }; + F7C55C512FB4A658004A974F /* NCAssistantInputModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7C55C502FB4A651004A974F /* NCAssistantInputModel.swift */; }; F7C687E92D22BD46004757BC /* NCManageDatabase+RecommendedFiles.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7C687E82D22BD46004757BC /* NCManageDatabase+RecommendedFiles.swift */; }; F7C687EA2D22BDE5004757BC /* NCManageDatabase+RecommendedFiles.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7C687E82D22BD46004757BC /* NCManageDatabase+RecommendedFiles.swift */; }; F7C687EB2D22BDE5004757BC /* NCManageDatabase+RecommendedFiles.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7C687E82D22BD46004757BC /* NCManageDatabase+RecommendedFiles.swift */; }; @@ -1716,6 +1717,7 @@ F7C30DF9291BCF790017149B /* NCNetworkingE2EECreateFolder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCNetworkingE2EECreateFolder.swift; sourceTree = ""; }; F7C30DFC291BD0B80017149B /* NCNetworkingE2EEDelete.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCNetworkingE2EEDelete.swift; sourceTree = ""; }; F7C30DFF291BD2610017149B /* NCNetworkingE2EERename.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCNetworkingE2EERename.swift; sourceTree = ""; }; + F7C55C502FB4A651004A974F /* NCAssistantInputModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCAssistantInputModel.swift; sourceTree = ""; }; F7C687E82D22BD46004757BC /* NCManageDatabase+RecommendedFiles.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NCManageDatabase+RecommendedFiles.swift"; sourceTree = ""; }; F7C7B488245EBA4100D93E60 /* NCViewerQuickLook.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCViewerQuickLook.swift; sourceTree = ""; }; F7C9555221F0C4CA0024296E /* NCActivity.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = NCActivity.storyboard; sourceTree = ""; }; @@ -2166,6 +2168,7 @@ F3A0478E2BD2668800658E7B /* Assistant */ = { isa = PBXGroup; children = ( + F7C55C502FB4A651004A974F /* NCAssistantInputModel.swift */, F3A047962BD2668800658E7B /* NCAssistant.swift */, F3A047932BD2668800658E7B /* NCAssistantModel.swift */, F3DDFE0D2F15452F00A784C8 /* Chat */, @@ -4621,6 +4624,7 @@ F78F74362163781100C2ADAD /* NCTrash.swift in Sources */, F71638922FA0C20C00A913B7 /* NCMoreView.swift in Sources */, AF2D7C7C2742556F00ADF566 /* NCShareLinkCell.swift in Sources */, + F7C55C512FB4A658004A974F /* NCAssistantInputModel.swift in Sources */, F7E41316294A19B300839300 /* UIView+Extension.swift in Sources */, F7C30E00291BD2610017149B /* NCNetworkingE2EERename.swift in Sources */, F74AF3A4247FB6AE00AC767B /* NCUtilityFileSystem.swift in Sources */, diff --git a/iOSClient/Assistant/Chat/NCAssistantChat.swift b/iOSClient/Assistant/Chat/NCAssistantChat.swift index 344d3fdc2f..a234fba870 100644 --- a/iOSClient/Assistant/Chat/NCAssistantChat.swift +++ b/iOSClient/Assistant/Chat/NCAssistantChat.swift @@ -209,15 +209,15 @@ struct EmptyChatView: View { #Preview { NavigationStack { NCAssistantChat(conversationsModel: .constant(NCAssistantChatConversationsModel(controller: nil))) - .environment(NCAssistantChatModel(controller: nil)) - .environment(NCAssistantModel(controller: nil)) + .environment(NCAssistantChatModel(controller: nil, inputModel: NCAssistantInputModel())) + .environment(NCAssistantModel(controller: nil, inputModel: NCAssistantInputModel())) } } -#Preview("With Messages") { +#Preview("With Messages") { NavigationStack { NCAssistantChat(conversationsModel: .constant(NCAssistantChatConversationsModel(controller: nil))) - .environment(NCAssistantChatModel.example) - .environment(NCAssistantModel(controller: nil)) + .environment(NCAssistantChatModel(controller: nil, inputModel: NCAssistantInputModel())) + .environment(NCAssistantModel(controller: nil, inputModel: NCAssistantInputModel())) } } diff --git a/iOSClient/Assistant/Chat/NCAssistantChatModel.swift b/iOSClient/Assistant/Chat/NCAssistantChatModel.swift index 7166333625..bbbabde172 100644 --- a/iOSClient/Assistant/Chat/NCAssistantChatModel.swift +++ b/iOSClient/Assistant/Chat/NCAssistantChatModel.swift @@ -15,8 +15,15 @@ class NCAssistantChatModel { var showRetryResponseGenerationButton = false var showMessageNotSentError: Bool = false - var text: String = "" - var inputText: String + var text: String { + get { inputModel.text } + set { inputModel.text = newValue } + } + + var inputText: String { + get { inputModel.initialText } + set { inputModel.initialText = newValue } + } public private(set) var selectedConversation: AssistantConversation? @@ -26,16 +33,17 @@ class NCAssistantChatModel { private var pollingTask: Task? @ObservationIgnored var controller: NCMainTabBarController? + @ObservationIgnored let inputModel: NCAssistantInputModel @ObservationIgnored private var chatMessageTaskId: Int? @ObservationIgnored var windowScene: UIWindowScene? { SceneManager.shared.getWindowScene(controller: controller) } - init(controller: NCMainTabBarController?, messages: [AssistantChatMessage] = [], inputText: String = "") { + init(controller: NCMainTabBarController?, messages: [AssistantChatMessage] = [], inputModel: NCAssistantInputModel) { self.controller = controller self.ncSession = NCSession.shared.getSession(controller: controller) self.messages = messages - self.inputText = inputText + self.inputModel = inputModel } func startPollingForResponse(interval: TimeInterval = 4.0) { @@ -190,5 +198,5 @@ extension NCAssistantChatModel { role: "assistant", content: "Based on the text you provided, here's a concise summary: The document discusses the classic Lorem Ipsum placeholder text, which has been used in the printing and typesetting industry for centuries as a standard dummy text.", timestamp: Int(Date().addingTimeInterval(-120).timeIntervalSince1970 * 1000) - )]) + )], inputModel: NCAssistantInputModel()) } diff --git a/iOSClient/Assistant/Create Task/NCAssistantCreateNewTask.swift b/iOSClient/Assistant/Create Task/NCAssistantCreateNewTask.swift index 33cb36fa35..caec215dde 100644 --- a/iOSClient/Assistant/Create Task/NCAssistantCreateNewTask.swift +++ b/iOSClient/Assistant/Create Task/NCAssistantCreateNewTask.swift @@ -60,7 +60,7 @@ struct NCAssistantCreateNewTask: View { } #Preview { - let model = NCAssistantModel(controller: nil) + let model = NCAssistantModel(controller: nil, inputModel: NCAssistantInputModel()) NCAssistantCreateNewTask() .environment(model) diff --git a/iOSClient/Assistant/NCAssistant.swift b/iOSClient/Assistant/NCAssistant.swift index 23e9894a1f..b8c5a29c36 100644 --- a/iOSClient/Assistant/NCAssistant.swift +++ b/iOSClient/Assistant/NCAssistant.swift @@ -89,14 +89,15 @@ struct NCAssistant: View { } #Preview { - @Previewable @State var chatModel = NCAssistantChatModel(controller: nil) - let model = NCAssistantModel(controller: nil) + @Previewable @State var chatModel = NCAssistantChatModel(controller: nil, inputModel: NCAssistantInputModel()) + + let model = NCAssistantModel(controller: nil, inputModel: NCAssistantInputModel()) let conversationsModel = NCAssistantChatConversationsModel(controller: nil) NCAssistant(assistantModel: model, chatModel: chatModel, conversationsModel: conversationsModel) - .onAppear { - model.loadDummyData() - } + .onAppear { + model.loadDummyData() + } } struct TaskList: View { diff --git a/iOSClient/Assistant/NCAssistantInputModel.swift b/iOSClient/Assistant/NCAssistantInputModel.swift new file mode 100644 index 0000000000..0ef847c09d --- /dev/null +++ b/iOSClient/Assistant/NCAssistantInputModel.swift @@ -0,0 +1,18 @@ +// SPDX-FileCopyrightText: Nextcloud GmbH +// SPDX-FileCopyrightText: 2025 Marino Faggiana +// SPDX-License-Identifier: GPL-3.0-or-later + +import Foundation +import UIKit +import NextcloudKit +import SwiftUI + +@Observable +final class NCAssistantInputModel { + var text: String = "" + var initialText: String + + init(initialText: String = "") { + self.initialText = initialText + } +} diff --git a/iOSClient/Assistant/NCAssistantModel.swift b/iOSClient/Assistant/NCAssistantModel.swift index 2036adee67..7b796643ca 100644 --- a/iOSClient/Assistant/NCAssistantModel.swift +++ b/iOSClient/Assistant/NCAssistantModel.swift @@ -14,8 +14,15 @@ class NCAssistantModel { var selectedType: TaskTypeData? var selectedTask: AssistantTask? - var text: String = "" - var inputText: String + var text: String { + get { inputModel.text } + set { inputModel.text = newValue } + } + + var inputText: String { + get { inputModel.initialText } + set { inputModel.initialText = newValue } + } var hasError: Bool = false var isLoading: Bool = false @@ -23,16 +30,17 @@ class NCAssistantModel { var scrollTypeListToTop: Bool = false @ObservationIgnored let controller: NCMainTabBarController? + @ObservationIgnored let inputModel: NCAssistantInputModel @ObservationIgnored private var tasks: [AssistantTask] = [] @ObservationIgnored private let session: NCSession.Session @ObservationIgnored private let useV2: Bool @ObservationIgnored private let chatTypeId = "core:text2text:chat" @ObservationIgnored var isSelectedTypeChat: Bool { selectedType?.id == chatTypeId } - init(controller: NCMainTabBarController?, inputText: String = "") { + init(controller: NCMainTabBarController?, inputModel: NCAssistantInputModel) { self.controller = controller - self.inputText = inputText - session = NCSession.shared.getSession(controller: controller) + self.inputModel = inputModel + self.session = NCSession.shared.getSession(controller: controller) let capabilities = NCNetworking.shared.capabilities[session.account] ?? NKCapabilities.Capabilities() useV2 = capabilities.serverVersionMajor >= NCGlobal.shared.nextcloudVersion30 diff --git a/iOSClient/Assistant/Task Detail/NCAssistantTaskDetail.swift b/iOSClient/Assistant/Task Detail/NCAssistantTaskDetail.swift index 52370b5a3f..f2dc5cc0de 100644 --- a/iOSClient/Assistant/Task Detail/NCAssistantTaskDetail.swift +++ b/iOSClient/Assistant/Task Detail/NCAssistantTaskDetail.swift @@ -35,7 +35,7 @@ struct NCAssistantTaskDetail: View { } #Preview { - let assistantModel = NCAssistantModel(controller: nil) + let assistantModel = NCAssistantModel(controller: nil, inputModel: NCAssistantInputModel()) NCAssistantTaskDetail(task: assistantModel.selectedTask!) .environment(assistantModel) diff --git a/iOSClient/Main/NCMainNavigationController.swift b/iOSClient/Main/NCMainNavigationController.swift index c5b92ac092..fa73b5fdc7 100644 --- a/iOSClient/Main/NCMainNavigationController.swift +++ b/iOSClient/Main/NCMainNavigationController.swift @@ -83,7 +83,8 @@ class NCMainNavigationController: UINavigationController, UINavigationController assistantButtonItem.title = NSLocalizedString("_assistant_", comment: "") assistantButtonItem.tintColor = NCBrandColor.shared.iconImageColor assistantButtonItem.primaryAction = UIAction(handler: { _ in - let assistant = NCAssistant(assistantModel: NCAssistantModel(controller: self.controller, inputText: "ciao ciao"), chatModel: NCAssistantChatModel(controller: self.controller, inputText: "ciao ciao"), conversationsModel: NCAssistantChatConversationsModel(controller: self.controller)) + let inputModel = NCAssistantInputModel(initialText: "ciao ciao") + let assistant = NCAssistant(assistantModel: NCAssistantModel(controller: self.controller, inputModel: inputModel), chatModel: NCAssistantChatModel(controller: self.controller, inputModel: inputModel), conversationsModel: NCAssistantChatConversationsModel(controller: self.controller)) let hostingController = UIHostingController(rootView: assistant) self.present(hostingController, animated: true, completion: nil) }) diff --git a/iOSClient/SceneDelegate.swift b/iOSClient/SceneDelegate.swift index a8e81cbab2..d302ad6458 100644 --- a/iOSClient/SceneDelegate.swift +++ b/iOSClient/SceneDelegate.swift @@ -347,7 +347,8 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { Task { @MainActor in let capabilities = await NKCapabilities.shared.getCapabilities(for: controller.account) if capabilities.assistantEnabled { - let assistant = NCAssistant(assistantModel: NCAssistantModel(controller: controller, inputText: text), chatModel: NCAssistantChatModel(controller: controller, inputText: text), conversationsModel: NCAssistantChatConversationsModel(controller: controller)) + let inputModel = NCAssistantInputModel(initialText: text) + let assistant = NCAssistant(assistantModel: NCAssistantModel(controller: controller, inputModel: inputModel), chatModel: NCAssistantChatModel(controller: controller, inputModel: inputModel), conversationsModel: NCAssistantChatConversationsModel(controller: controller)) let hostingController = UIHostingController(rootView: assistant) controller.present(hostingController, animated: true, completion: nil) } From 90804952134522cb22e8e6d2d5607299e5b93412 Mon Sep 17 00:00:00 2001 From: Marino Faggiana Date: Wed, 13 May 2026 14:52:08 +0200 Subject: [PATCH 15/22] cleaning Signed-off-by: Marino Faggiana --- iOSClient/Assistant/Chat/NCAssistantChat.swift | 2 +- iOSClient/Main/NCMainNavigationController.swift | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/iOSClient/Assistant/Chat/NCAssistantChat.swift b/iOSClient/Assistant/Chat/NCAssistantChat.swift index a234fba870..40cf01fcdb 100644 --- a/iOSClient/Assistant/Chat/NCAssistantChat.swift +++ b/iOSClient/Assistant/Chat/NCAssistantChat.swift @@ -214,7 +214,7 @@ struct EmptyChatView: View { } } -#Preview("With Messages") { +#Preview("With Messages") { NavigationStack { NCAssistantChat(conversationsModel: .constant(NCAssistantChatConversationsModel(controller: nil))) .environment(NCAssistantChatModel(controller: nil, inputModel: NCAssistantInputModel())) diff --git a/iOSClient/Main/NCMainNavigationController.swift b/iOSClient/Main/NCMainNavigationController.swift index fa73b5fdc7..ccce146116 100644 --- a/iOSClient/Main/NCMainNavigationController.swift +++ b/iOSClient/Main/NCMainNavigationController.swift @@ -83,7 +83,7 @@ class NCMainNavigationController: UINavigationController, UINavigationController assistantButtonItem.title = NSLocalizedString("_assistant_", comment: "") assistantButtonItem.tintColor = NCBrandColor.shared.iconImageColor assistantButtonItem.primaryAction = UIAction(handler: { _ in - let inputModel = NCAssistantInputModel(initialText: "ciao ciao") + let inputModel = NCAssistantInputModel() let assistant = NCAssistant(assistantModel: NCAssistantModel(controller: self.controller, inputModel: inputModel), chatModel: NCAssistantChatModel(controller: self.controller, inputModel: inputModel), conversationsModel: NCAssistantChatConversationsModel(controller: self.controller)) let hostingController = UIHostingController(rootView: assistant) self.present(hostingController, animated: true, completion: nil) From dae8638f19f6b8cba9b42ece8091dd43ac763b44 Mon Sep 17 00:00:00 2001 From: Marino Faggiana Date: Thu, 14 May 2026 10:36:32 +0200 Subject: [PATCH 16/22] action Signed-off-by: Marino Faggiana --- .../Action Assistant.entitlements | 14 ++ Action Assistant/ActionViewController.swift | 134 ++++++++++++ .../Base.lproj/MainInterface.storyboard | 64 ++++++ .../AppIcon.appiconset/Contents.json | 38 ++++ .../AppIcon.appiconset/sparkler 1.png | Bin 0 -> 70621 bytes .../AppIcon.appiconset/sparkler 2.png | Bin 0 -> 70621 bytes .../AppIcon.appiconset/sparkler.png | Bin 0 -> 70621 bytes .../Images.xcassets/Contents.json | 6 + Action Assistant/Info.plist | 23 ++ Nextcloud.xcodeproj/project.pbxproj | 207 +++++++++++++++++- 10 files changed, 485 insertions(+), 1 deletion(-) create mode 100644 Action Assistant/Action Assistant.entitlements create mode 100644 Action Assistant/ActionViewController.swift create mode 100644 Action Assistant/Base.lproj/MainInterface.storyboard create mode 100644 Action Assistant/Images.xcassets/AppIcon.appiconset/Contents.json create mode 100644 Action Assistant/Images.xcassets/AppIcon.appiconset/sparkler 1.png create mode 100644 Action Assistant/Images.xcassets/AppIcon.appiconset/sparkler 2.png create mode 100644 Action Assistant/Images.xcassets/AppIcon.appiconset/sparkler.png create mode 100644 Action Assistant/Images.xcassets/Contents.json create mode 100644 Action Assistant/Info.plist diff --git a/Action Assistant/Action Assistant.entitlements b/Action Assistant/Action Assistant.entitlements new file mode 100644 index 0000000000..4ecc3f0d13 --- /dev/null +++ b/Action Assistant/Action Assistant.entitlements @@ -0,0 +1,14 @@ + + + + + com.apple.security.application-groups + + group.it.twsweb.Crypto-Cloud + + keychain-access-groups + + $(AppIdentifierPrefix)it.twsweb.Crypto-Cloud + + + diff --git a/Action Assistant/ActionViewController.swift b/Action Assistant/ActionViewController.swift new file mode 100644 index 0000000000..59b88b3e31 --- /dev/null +++ b/Action Assistant/ActionViewController.swift @@ -0,0 +1,134 @@ +// +// ActionViewController.swift +// Action Assistant +// +// Created by Marino Faggiana on 14/05/2026. +// Copyright © 2026 Marino Faggiana. All rights reserved. +// + +import UIKit +import UniformTypeIdentifiers + +final class ActionViewController: UIViewController { + private let callbackURL = URL(string: "nextcloud://assistant/shared-text")! + private let debugPrefix = "[ActionAssistant]" + + override func viewDidLoad() { + super.viewDidLoad() + + // Keep the action visually neutral because it only forwards the selected text. + view.backgroundColor = .clear + + print("\(debugPrefix) viewDidLoad") + + Task { + await handleAction() + } + } + + private func handleAction() async { + print("\(debugPrefix) handleAction started") + + guard let text = await loadSelectedText() else { + print("\(debugPrefix) no selected text found") + complete() + return + } + + print("\(debugPrefix) selected text length: \(text.count)") + + NCAssistantSharedTextStore.save(text) + print("\(debugPrefix) text saved to shared store") + + openMainApp() + } + + private func loadSelectedText() async -> String? { + guard let extensionItems = extensionContext?.inputItems as? [NSExtensionItem] else { + print("\(debugPrefix) extensionContext inputItems missing") + return nil + } + + print("\(debugPrefix) extension items count: \(extensionItems.count)") + + for extensionItem in extensionItems { + guard let attachments = extensionItem.attachments else { + print("\(debugPrefix) extension item without attachments") + continue + } + + print("\(debugPrefix) attachments count: \(attachments.count)") + + for provider in attachments { + print("\(debugPrefix) registered types: \(provider.registeredTypeIdentifiers)") + if provider.hasItemConformingToTypeIdentifier(UTType.plainText.identifier) { + return await loadText(from: provider, typeIdentifier: UTType.plainText.identifier) + } + + if provider.hasItemConformingToTypeIdentifier(UTType.utf8PlainText.identifier) { + return await loadText(from: provider, typeIdentifier: UTType.utf8PlainText.identifier) + } + + if provider.hasItemConformingToTypeIdentifier(UTType.text.identifier) { + return await loadText(from: provider, typeIdentifier: UTType.text.identifier) + } + } + } + + return nil + } + + private func loadText(from provider: NSItemProvider, typeIdentifier: String) async -> String? { + await withCheckedContinuation { continuation in + print("\(self.debugPrefix) loading type identifier: \(typeIdentifier)") + + provider.loadItem(forTypeIdentifier: typeIdentifier, options: nil) { item, error in + if let error { + print("\(self.debugPrefix) loadItem error: \(error)") + } + + let text: String? + + if let string = item as? String { + text = string + } else if let attributedString = item as? NSAttributedString { + text = attributedString.string + } else if let data = item as? Data { + text = String(data: data, encoding: .utf8) + } else if let url = item as? URL { + text = try? String(contentsOf: url, encoding: .utf8) + } else { + if let item { + print("\(self.debugPrefix) unsupported item type: \(type(of: item))") + } else { + print("\(self.debugPrefix) loaded item is nil") + } + text = nil + } + + guard let text, !text.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty else { + continuation.resume(returning: nil) + return + } + + continuation.resume(returning: text) + } + } + } + + private func openMainApp() { + print("\(debugPrefix) opening main app with URL: \(callbackURL.absoluteString)") + + extensionContext?.open(callbackURL) { [weak self] success in + guard let self else { return } + + print("\(self.debugPrefix) open main app result: \(success)") + self.complete() + } + } + + private func complete() { + print("\(debugPrefix) complete") + extensionContext?.completeRequest(returningItems: nil, completionHandler: nil) + } +} diff --git a/Action Assistant/Base.lproj/MainInterface.storyboard b/Action Assistant/Base.lproj/MainInterface.storyboard new file mode 100644 index 0000000000..477da1e3aa --- /dev/null +++ b/Action Assistant/Base.lproj/MainInterface.storyboard @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Action Assistant/Images.xcassets/AppIcon.appiconset/Contents.json b/Action Assistant/Images.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000000..6b5c644d02 --- /dev/null +++ b/Action Assistant/Images.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,38 @@ +{ + "images" : [ + { + "filename" : "sparkler.png", + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "sparkler 1.png", + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "tinted" + } + ], + "filename" : "sparkler 2.png", + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Action Assistant/Images.xcassets/AppIcon.appiconset/sparkler 1.png b/Action Assistant/Images.xcassets/AppIcon.appiconset/sparkler 1.png new file mode 100644 index 0000000000000000000000000000000000000000..fdf882770056b8b8441196bfc3773107f88d8723 GIT binary patch literal 70621 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 T-Sq|me@ymU>?_#oa_N5nXSqlu literal 0 HcmV?d00001 diff --git a/Action Assistant/Images.xcassets/AppIcon.appiconset/sparkler 2.png b/Action Assistant/Images.xcassets/AppIcon.appiconset/sparkler 2.png new file mode 100644 index 0000000000000000000000000000000000000000..fdf882770056b8b8441196bfc3773107f88d8723 GIT binary patch literal 70621 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 T-Sq|me@ymU>?_#oa_N5nXSqlu literal 0 HcmV?d00001 diff --git a/Action Assistant/Images.xcassets/AppIcon.appiconset/sparkler.png b/Action Assistant/Images.xcassets/AppIcon.appiconset/sparkler.png new file mode 100644 index 0000000000000000000000000000000000000000..fdf882770056b8b8441196bfc3773107f88d8723 GIT binary patch literal 70621 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 T-Sq|me@ymU>?_#oa_N5nXSqlu literal 0 HcmV?d00001 diff --git a/Action Assistant/Images.xcassets/Contents.json b/Action Assistant/Images.xcassets/Contents.json new file mode 100644 index 0000000000..73c00596a7 --- /dev/null +++ b/Action Assistant/Images.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Action Assistant/Info.plist b/Action Assistant/Info.plist new file mode 100644 index 0000000000..8fe4c9c6c9 --- /dev/null +++ b/Action Assistant/Info.plist @@ -0,0 +1,23 @@ + + + + + CFBundleDisplayName + Nextcloud Assistant + + NSExtension + + NSExtensionAttributes + + NSExtensionActivationRule + TRUEPREDICATE + + + NSExtensionMainStoryboard + MainInterface + + NSExtensionPointIdentifier + com.apple.ui-services + + + diff --git a/Nextcloud.xcodeproj/project.pbxproj b/Nextcloud.xcodeproj/project.pbxproj index 0cdb90fccf..795957f7aa 100644 --- a/Nextcloud.xcodeproj/project.pbxproj +++ b/Nextcloud.xcodeproj/project.pbxproj @@ -742,6 +742,14 @@ F7C30E00291BD2610017149B /* NCNetworkingE2EERename.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7C30DFF291BD2610017149B /* NCNetworkingE2EERename.swift */; }; F7C30E01291BD2610017149B /* NCNetworkingE2EERename.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7C30DFF291BD2610017149B /* NCNetworkingE2EERename.swift */; }; F7C55C512FB4A658004A974F /* NCAssistantInputModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7C55C502FB4A651004A974F /* NCAssistantInputModel.swift */; }; + F7C55C7C2FB5AEF7004A974F /* UniformTypeIdentifiers.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F7C55C7B2FB5AEF7004A974F /* UniformTypeIdentifiers.framework */; }; + F7C55C882FB5AEF7004A974F /* Action Assistant.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = F7C55C7A2FB5AEF7004A974F /* Action Assistant.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; + F7C55C8D2FB5B02C004A974F /* NCAssistantSharedTextStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7FFFC9D2FB300440015441E /* NCAssistantSharedTextStore.swift */; }; + F7C55C8E2FB5B03D004A974F /* NCGlobal.swift in Sources */ = {isa = PBXBuildFile; fileRef = F702F2CE25EE5B5C008F8E80 /* NCGlobal.swift */; }; + F7C55C8F2FB5B045004A974F /* NCBrand.swift in Sources */ = {isa = PBXBuildFile; fileRef = F76B3CCD1EAE01BD00921AC9 /* NCBrand.swift */; }; + F7C55C9A2FB5B127004A974F /* ThreadSafeDictionary.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7245923289BB50B00474787 /* ThreadSafeDictionary.swift */; }; + F7C55C9B2FB5B1A7004A974F /* UIColor+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = F70CEF5523E9C7E50007035B /* UIColor+Extension.swift */; }; + F7C55C9F2FB5B83A004A974F /* NextcloudKit in Frameworks */ = {isa = PBXBuildFile; productRef = F7C55C9E2FB5B83A004A974F /* NextcloudKit */; }; F7C687E92D22BD46004757BC /* NCManageDatabase+RecommendedFiles.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7C687E82D22BD46004757BC /* NCManageDatabase+RecommendedFiles.swift */; }; F7C687EA2D22BDE5004757BC /* NCManageDatabase+RecommendedFiles.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7C687E82D22BD46004757BC /* NCManageDatabase+RecommendedFiles.swift */; }; F7C687EB2D22BDE5004757BC /* NCManageDatabase+RecommendedFiles.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7C687E82D22BD46004757BC /* NCManageDatabase+RecommendedFiles.swift */; }; @@ -990,6 +998,13 @@ remoteGlobalIDString = F771E3CF20E2392D00AFB62D; remoteInfo = "File Provider Extension"; }; + F7C55C862FB5AEF7004A974F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = F7F67BA01A24D27800EE80DA /* Project object */; + proxyType = 1; + remoteGlobalIDString = F7C55C792FB5AEF7004A974F; + remoteInfo = "Action Assistant"; + }; F7C9739728F17131002C43E2 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = F7F67BA01A24D27800EE80DA /* Project object */; @@ -1113,6 +1128,7 @@ 2C33C48623E2C475005F963B /* Notification Service Extension.appex in Embed Foundation Extensions */, F7C9739928F17131002C43E2 /* WidgetDashboardIntentHandler.appex in Embed Foundation Extensions */, F7346E1C28B0EF5E006CE2D2 /* Widget.appex in Embed Foundation Extensions */, + F7C55C882FB5AEF7004A974F /* Action Assistant.appex in Embed Foundation Extensions */, ); name = "Embed Foundation Extensions"; runOnlyForDeploymentPostprocessing = 0; @@ -1718,6 +1734,8 @@ F7C30DFC291BD0B80017149B /* NCNetworkingE2EEDelete.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCNetworkingE2EEDelete.swift; sourceTree = ""; }; F7C30DFF291BD2610017149B /* NCNetworkingE2EERename.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCNetworkingE2EERename.swift; sourceTree = ""; }; F7C55C502FB4A651004A974F /* NCAssistantInputModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCAssistantInputModel.swift; sourceTree = ""; }; + F7C55C7A2FB5AEF7004A974F /* Action Assistant.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "Action Assistant.appex"; sourceTree = BUILT_PRODUCTS_DIR; }; + F7C55C7B2FB5AEF7004A974F /* UniformTypeIdentifiers.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UniformTypeIdentifiers.framework; path = System/Library/Frameworks/UniformTypeIdentifiers.framework; sourceTree = SDKROOT; }; F7C687E82D22BD46004757BC /* NCManageDatabase+RecommendedFiles.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NCManageDatabase+RecommendedFiles.swift"; sourceTree = ""; }; F7C7B488245EBA4100D93E60 /* NCViewerQuickLook.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCViewerQuickLook.swift; sourceTree = ""; }; F7C9555221F0C4CA0024296E /* NCActivity.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = NCActivity.storyboard; sourceTree = ""; }; @@ -1840,8 +1858,19 @@ F7FFFCA32FB3088D0015441E /* NCShareExtension+Assistant.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NCShareExtension+Assistant.swift"; sourceTree = ""; }; /* End PBXFileReference section */ +/* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */ + F7C55C8B2FB5AEF7004A974F /* PBXFileSystemSynchronizedBuildFileExceptionSet */ = { + isa = PBXFileSystemSynchronizedBuildFileExceptionSet; + membershipExceptions = ( + Info.plist, + ); + target = F7C55C792FB5AEF7004A974F /* Action Assistant */; + }; +/* End PBXFileSystemSynchronizedBuildFileExceptionSet section */ + /* Begin PBXFileSystemSynchronizedRootGroup section */ AA517BB42D66149900F8D37C /* .tx */ = {isa = PBXFileSystemSynchronizedRootGroup; explicitFileTypes = {}; explicitFolders = (); path = .tx; sourceTree = ""; }; + F7C55C7D2FB5AEF7004A974F /* Action Assistant */ = {isa = PBXFileSystemSynchronizedRootGroup; exceptions = (F7C55C8B2FB5AEF7004A974F /* PBXFileSystemSynchronizedBuildFileExceptionSet */, ); explicitFileTypes = {}; explicitFolders = (); path = "Action Assistant"; sourceTree = ""; }; /* End PBXFileSystemSynchronizedRootGroup section */ /* Begin PBXFrameworksBuildPhase section */ @@ -1986,6 +2015,15 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + F7C55C772FB5AEF7004A974F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F7C55C9F2FB5B83A004A974F /* NextcloudKit in Frameworks */, + F7C55C7C2FB5AEF7004A974F /* UniformTypeIdentifiers.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; F7C9738D28F17131002C43E2 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -3214,6 +3252,7 @@ F7F1FBA62E27D13700C79E20 /* Frameworks */ = { isa = PBXGroup; children = ( + F7C55C7B2FB5AEF7004A974F /* UniformTypeIdentifiers.framework */, ); name = Frameworks; sourceTree = ""; @@ -3255,6 +3294,7 @@ 2C33C48023E2C475005F963B /* Notification Service Extension */, F7346E1428B0EF5B006CE2D2 /* Widget */, F7C9739328F17131002C43E2 /* WidgetDashboardIntentHandler */, + F7C55C7D2FB5AEF7004A974F /* Action Assistant */, F7FC7D651DC1F98700BB2C6A /* Products */, F30A962A2A27A9C800D7BCFE /* Tests */, F771E3D020E2392D00AFB62D /* File Provider Extension.appex */, @@ -3267,6 +3307,7 @@ C0046CDA2A17B98400D87C9D /* NextcloudUITests.xctest */, F7F1FBA62E27D13700C79E20 /* Frameworks */, F31165012F9674A1009A1E37 /* AppIcon.icon */, + F7C55C7A2FB5AEF7004A974F /* Action Assistant.appex */, ); sourceTree = ""; }; @@ -3635,6 +3676,7 @@ F7346E1B28B0EF5E006CE2D2 /* PBXTargetDependency */, F7C9739828F17131002C43E2 /* PBXTargetDependency */, F70716EC2987F81500E72C1D /* PBXTargetDependency */, + F7C55C872FB5AEF7004A974F /* PBXTargetDependency */, ); name = Nextcloud; packageProductDependencies = ( @@ -3671,6 +3713,29 @@ productReference = F7CE8AFA1DC1F8D8009CAE48 /* Nextcloud.app */; productType = "com.apple.product-type.application"; }; + F7C55C792FB5AEF7004A974F /* Action Assistant */ = { + isa = PBXNativeTarget; + buildConfigurationList = F7C55C8C2FB5AEF7004A974F /* Build configuration list for PBXNativeTarget "Action Assistant" */; + buildPhases = ( + F7C55C762FB5AEF7004A974F /* Sources */, + F7C55C772FB5AEF7004A974F /* Frameworks */, + F7C55C782FB5AEF7004A974F /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + fileSystemSynchronizedGroups = ( + F7C55C7D2FB5AEF7004A974F /* Action Assistant */, + ); + name = "Action Assistant"; + packageProductDependencies = ( + F7C55C9E2FB5B83A004A974F /* NextcloudKit */, + ); + productName = "Action Assistant"; + productReference = F7C55C7A2FB5AEF7004A974F /* Action Assistant.appex */; + productType = "com.apple.product-type.app-extension"; + }; F7C9738F28F17131002C43E2 /* WidgetDashboardIntentHandler */ = { isa = PBXNativeTarget; buildConfigurationList = F7C9739A28F17132002C43E2 /* Build configuration list for PBXNativeTarget "WidgetDashboardIntentHandler" */; @@ -3703,7 +3768,7 @@ isa = PBXProject; attributes = { BuildIndependentTargetsInParallel = YES; - LastSwiftUpdateCheck = 1430; + LastSwiftUpdateCheck = 2640; LastUpgradeCheck = 2640; ORGANIZATIONNAME = "Marino Faggiana"; TargetAttributes = { @@ -3757,6 +3822,9 @@ }; }; }; + F7C55C792FB5AEF7004A974F = { + CreatedOnToolsVersion = 26.4; + }; F7C9738F28F17131002C43E2 = { CreatedOnToolsVersion = 14.0; }; @@ -3853,6 +3921,7 @@ F7346E0F28B0EF5B006CE2D2 /* Widget */, F7C9738F28F17131002C43E2 /* WidgetDashboardIntentHandler */, F71459B41D12E3B700CAFEEC /* Share */, + F7C55C792FB5AEF7004A974F /* Action Assistant */, F771E3CF20E2392D00AFB62D /* File Provider Extension */, F70716E22987F81400E72C1D /* File Provider Extension UI */, 2C33C47E23E2C475005F963B /* Notification Service Extension */, @@ -4031,6 +4100,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + F7C55C782FB5AEF7004A974F /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; F7C9738E28F17131002C43E2 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -4829,6 +4905,18 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + F7C55C762FB5AEF7004A974F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F7C55C8F2FB5B045004A974F /* NCBrand.swift in Sources */, + F7C55C8E2FB5B03D004A974F /* NCGlobal.swift in Sources */, + F7C55C9B2FB5B1A7004A974F /* UIColor+Extension.swift in Sources */, + F7C55C8D2FB5B02C004A974F /* NCAssistantSharedTextStore.swift in Sources */, + F7C55C9A2FB5B127004A974F /* ThreadSafeDictionary.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; F7C9738C28F17131002C43E2 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -4928,6 +5016,11 @@ target = F771E3CF20E2392D00AFB62D /* File Provider Extension */; targetProxy = F771E3E920E2392E00AFB62D /* PBXContainerItemProxy */; }; + F7C55C872FB5AEF7004A974F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = F7C55C792FB5AEF7004A974F /* Action Assistant */; + targetProxy = F7C55C862FB5AEF7004A974F /* PBXContainerItemProxy */; + }; F7C9739828F17131002C43E2 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = F7C9738F28F17131002C43E2 /* WidgetDashboardIntentHandler */; @@ -5711,6 +5804,104 @@ }; name = Release; }; + F7C55C892FB5AEF7004A974F /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_ENTITLEMENTS = "Action Assistant/Action Assistant.entitlements"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GCC_DYNAMIC_NO_PIC = NO; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = "Action Assistant/Info.plist"; + 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 = "it.twsweb.Nextcloud.Action-Assistant"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + STRING_CATALOG_GENERATE_SYMBOLS = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; + 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 = Debug; + }; + F7C55C8A2FB5AEF7004A974F /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_ENTITLEMENTS = "Action Assistant/Action Assistant.entitlements"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = "Action Assistant/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@executable_path/../../Frameworks", + ); + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MARKETING_VERSION = 1.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = "it.twsweb.Nextcloud.Action-Assistant"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + 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"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; F7C9739B28F17132002C43E2 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -6005,6 +6196,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + F7C55C8C2FB5AEF7004A974F /* Build configuration list for PBXNativeTarget "Action Assistant" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F7C55C892FB5AEF7004A974F /* Debug */, + F7C55C8A2FB5AEF7004A974F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; F7C9739A28F17132002C43E2 /* Build configuration list for PBXNativeTarget "WidgetDashboardIntentHandler" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -6601,6 +6801,11 @@ package = F7BB7E4527A18C56009B9F29 /* XCRemoteSwiftPackageReference "Parchment" */; productName = Parchment; }; + F7C55C9E2FB5B83A004A974F /* NextcloudKit */ = { + isa = XCSwiftPackageProductDependency; + package = F783034028B511D200B84583 /* XCRemoteSwiftPackageReference "NextcloudKit" */; + productName = NextcloudKit; + }; F7D4BF532CA2ED9D00A5E746 /* VLCKitSPM */ = { isa = XCSwiftPackageProductDependency; package = F7D4BF4E2CA2ECCB00A5E746 /* XCRemoteSwiftPackageReference "vlckit-spm" */; From 292747f25f09b43f3095ead2438ee716a8e92c63 Mon Sep 17 00:00:00 2001 From: Marino Faggiana Date: Thu, 14 May 2026 10:53:50 +0200 Subject: [PATCH 17/22] code Signed-off-by: Marino Faggiana --- Action Assistant/ActionViewController.swift | 40 ++------------------- Action Assistant/Info.plist | 4 +-- 2 files changed, 5 insertions(+), 39 deletions(-) diff --git a/Action Assistant/ActionViewController.swift b/Action Assistant/ActionViewController.swift index 59b88b3e31..d68ab34af1 100644 --- a/Action Assistant/ActionViewController.swift +++ b/Action Assistant/ActionViewController.swift @@ -11,7 +11,6 @@ import UniformTypeIdentifiers final class ActionViewController: UIViewController { private let callbackURL = URL(string: "nextcloud://assistant/shared-text")! - private let debugPrefix = "[ActionAssistant]" override func viewDidLoad() { super.viewDidLoad() @@ -19,48 +18,32 @@ final class ActionViewController: UIViewController { // Keep the action visually neutral because it only forwards the selected text. view.backgroundColor = .clear - print("\(debugPrefix) viewDidLoad") - Task { await handleAction() } } private func handleAction() async { - print("\(debugPrefix) handleAction started") - guard let text = await loadSelectedText() else { - print("\(debugPrefix) no selected text found") complete() return } - print("\(debugPrefix) selected text length: \(text.count)") - NCAssistantSharedTextStore.save(text) - print("\(debugPrefix) text saved to shared store") - openMainApp() } private func loadSelectedText() async -> String? { guard let extensionItems = extensionContext?.inputItems as? [NSExtensionItem] else { - print("\(debugPrefix) extensionContext inputItems missing") return nil } - print("\(debugPrefix) extension items count: \(extensionItems.count)") - for extensionItem in extensionItems { guard let attachments = extensionItem.attachments else { - print("\(debugPrefix) extension item without attachments") continue } - print("\(debugPrefix) attachments count: \(attachments.count)") - for provider in attachments { - print("\(debugPrefix) registered types: \(provider.registeredTypeIdentifiers)") if provider.hasItemConformingToTypeIdentifier(UTType.plainText.identifier) { return await loadText(from: provider, typeIdentifier: UTType.plainText.identifier) } @@ -80,13 +63,7 @@ final class ActionViewController: UIViewController { private func loadText(from provider: NSItemProvider, typeIdentifier: String) async -> String? { await withCheckedContinuation { continuation in - print("\(self.debugPrefix) loading type identifier: \(typeIdentifier)") - - provider.loadItem(forTypeIdentifier: typeIdentifier, options: nil) { item, error in - if let error { - print("\(self.debugPrefix) loadItem error: \(error)") - } - + provider.loadItem(forTypeIdentifier: typeIdentifier, options: nil) { item, _ in let text: String? if let string = item as? String { @@ -98,11 +75,6 @@ final class ActionViewController: UIViewController { } else if let url = item as? URL { text = try? String(contentsOf: url, encoding: .utf8) } else { - if let item { - print("\(self.debugPrefix) unsupported item type: \(type(of: item))") - } else { - print("\(self.debugPrefix) loaded item is nil") - } text = nil } @@ -117,18 +89,12 @@ final class ActionViewController: UIViewController { } private func openMainApp() { - print("\(debugPrefix) opening main app with URL: \(callbackURL.absoluteString)") - - extensionContext?.open(callbackURL) { [weak self] success in - guard let self else { return } - - print("\(self.debugPrefix) open main app result: \(success)") - self.complete() + extensionContext?.open(callbackURL) { [weak self] _ in + self?.complete() } } private func complete() { - print("\(debugPrefix) complete") extensionContext?.completeRequest(returningItems: nil, completionHandler: nil) } } diff --git a/Action Assistant/Info.plist b/Action Assistant/Info.plist index 8fe4c9c6c9..7b8350d95b 100644 --- a/Action Assistant/Info.plist +++ b/Action Assistant/Info.plist @@ -13,8 +13,8 @@ TRUEPREDICATE - NSExtensionMainStoryboard - MainInterface + NSExtensionPrincipalClass + $(PRODUCT_MODULE_NAME).ActionViewController NSExtensionPointIdentifier com.apple.ui-services From fa2309ba39648b0e1ab20b395eedc4cbfb5c6a20 Mon Sep 17 00:00:00 2001 From: Marino Faggiana Date: Thu, 14 May 2026 11:00:26 +0200 Subject: [PATCH 18/22] code Signed-off-by: Marino Faggiana --- Action Assistant/ActionViewController.swift | 1 + Action Assistant/Base.lproj/MainInterface.storyboard | 2 +- Action Assistant/Info.plist | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Action Assistant/ActionViewController.swift b/Action Assistant/ActionViewController.swift index d68ab34af1..090d4881a8 100644 --- a/Action Assistant/ActionViewController.swift +++ b/Action Assistant/ActionViewController.swift @@ -10,6 +10,7 @@ import UIKit import UniformTypeIdentifiers final class ActionViewController: UIViewController { + @IBOutlet weak var imageView: UIImageView! private let callbackURL = URL(string: "nextcloud://assistant/shared-text")! override func viewDidLoad() { diff --git a/Action Assistant/Base.lproj/MainInterface.storyboard b/Action Assistant/Base.lproj/MainInterface.storyboard index 477da1e3aa..9cee1ce9db 100644 --- a/Action Assistant/Base.lproj/MainInterface.storyboard +++ b/Action Assistant/Base.lproj/MainInterface.storyboard @@ -11,7 +11,7 @@ - + diff --git a/Action Assistant/Info.plist b/Action Assistant/Info.plist index 7b8350d95b..8fe4c9c6c9 100644 --- a/Action Assistant/Info.plist +++ b/Action Assistant/Info.plist @@ -13,8 +13,8 @@ TRUEPREDICATE - NSExtensionPrincipalClass - $(PRODUCT_MODULE_NAME).ActionViewController + NSExtensionMainStoryboard + MainInterface NSExtensionPointIdentifier com.apple.ui-services From 4c12375bdff46f5c03c4b92db645369c8f352efe Mon Sep 17 00:00:00 2001 From: Marino Faggiana Date: Thu, 14 May 2026 11:41:23 +0200 Subject: [PATCH 19/22] cod Signed-off-by: Marino Faggiana --- Action Assistant/ActionViewController.swift | 73 +++++++++++++++---- .../Base.lproj/MainInterface.storyboard | 44 ----------- .../Action_Assistant.entitlements | 0 .../Action_Assistant.plist | 0 .../NCShareExtension+Assistant.swift | 0 .../NCAssistantSharedTextStore.swift | 0 6 files changed, 60 insertions(+), 57 deletions(-) rename Action Assistant/Action Assistant.entitlements => Brand/Action_Assistant.entitlements (100%) rename Action Assistant/Info.plist => Brand/Action_Assistant.plist (100%) rename Share/{Assistant => }/NCShareExtension+Assistant.swift (100%) rename {Share => iOSClient}/Assistant/NCAssistantSharedTextStore.swift (100%) diff --git a/Action Assistant/ActionViewController.swift b/Action Assistant/ActionViewController.swift index 090d4881a8..8109425769 100644 --- a/Action Assistant/ActionViewController.swift +++ b/Action Assistant/ActionViewController.swift @@ -7,17 +7,17 @@ // import UIKit +import NextcloudKit import UniformTypeIdentifiers final class ActionViewController: UIViewController { - @IBOutlet weak var imageView: UIImageView! - private let callbackURL = URL(string: "nextcloud://assistant/shared-text")! - override func viewDidLoad() { super.viewDidLoad() - // Keep the action visually neutral because it only forwards the selected text. + view.isHidden = true + view.alpha = 0 view.backgroundColor = .clear + preferredContentSize = .zero Task { await handleAction() @@ -25,16 +25,16 @@ final class ActionViewController: UIViewController { } private func handleAction() async { - guard let text = await loadSelectedText() else { - complete() + guard let text = await loadText() else { + extensionContext?.completeRequest(returningItems: nil, completionHandler: nil) return } NCAssistantSharedTextStore.save(text) - openMainApp() + openMainAppForAssistantSharedText() } - private func loadSelectedText() async -> String? { + private func loadText() async -> String? { guard let extensionItems = extensionContext?.inputItems as? [NSExtensionItem] else { return nil } @@ -89,13 +89,60 @@ final class ActionViewController: UIViewController { } } - private func openMainApp() { - extensionContext?.open(callbackURL) { [weak self] _ in - self?.complete() + private func openMainAppForAssistantSharedText() { + guard let url = URL(string: "nextcloud://assistant/shared-text") else { + extensionContext?.completeRequest(returningItems: nil, completionHandler: nil) + return + } + + openAssistantSharedTextURLThroughResponderChain(url) + + DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { [weak self] in + self?.extensionContext?.completeRequest(returningItems: nil, completionHandler: nil) } } - private func complete() { - extensionContext?.completeRequest(returningItems: nil, completionHandler: nil) + /// Opens the Assistant shared-text deep link from the Share extension. + /// + /// Share extensions cannot use `UIApplication.shared` directly because it is not + /// extension-safe. This method walks the responder chain until it finds the hidden + /// `UIApplication` responder and invokes the modern `open(_:options:completionHandler:)` + /// Objective-C selector dynamically. + /// + /// This is intentionally isolated because it relies on Objective-C runtime dispatch. + /// + /// - Parameter url: Deep link URL to open in the containing application. + private func openAssistantSharedTextURLThroughResponderChain(_ url: URL) { + let selector = NSSelectorFromString("openURL:options:completionHandler:") + let applicationClass: AnyClass? = NSClassFromString("UIApplication") + var responder: UIResponder? = self + + while let currentResponder = responder { + guard let applicationClass, + currentResponder.isKind(of: applicationClass), + currentResponder.responds(to: selector), + let implementation = currentResponder.method(for: selector) else { + responder = currentResponder.next + continue + } + + typealias CompletionBlock = @convention(block) (Bool) -> Void + typealias OpenURLFunction = @convention(c) (AnyObject, Selector, NSURL, NSDictionary, CompletionBlock?) -> Void + + let openURL = unsafeBitCast(implementation, to: OpenURLFunction.self) + + let completion: CompletionBlock = { success in + if success { + nkLog(debug: "Assistant shared text deep link performed through modern responder chain") + } else { + nkLog(error: "Assistant shared text deep link modern responder chain returned false") + } + } + + openURL(currentResponder, selector, url as NSURL, NSDictionary(), completion) + return + } + + nkLog(error: "Assistant shared text deep link failed because no UIApplication responder can open URL") } } diff --git a/Action Assistant/Base.lproj/MainInterface.storyboard b/Action Assistant/Base.lproj/MainInterface.storyboard index 9cee1ce9db..816db3336e 100644 --- a/Action Assistant/Base.lproj/MainInterface.storyboard +++ b/Action Assistant/Base.lproj/MainInterface.storyboard @@ -3,62 +3,18 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Action Assistant/Action Assistant.entitlements b/Brand/Action_Assistant.entitlements similarity index 100% rename from Action Assistant/Action Assistant.entitlements rename to Brand/Action_Assistant.entitlements diff --git a/Action Assistant/Info.plist b/Brand/Action_Assistant.plist similarity index 100% rename from Action Assistant/Info.plist rename to Brand/Action_Assistant.plist diff --git a/Share/Assistant/NCShareExtension+Assistant.swift b/Share/NCShareExtension+Assistant.swift similarity index 100% rename from Share/Assistant/NCShareExtension+Assistant.swift rename to Share/NCShareExtension+Assistant.swift diff --git a/Share/Assistant/NCAssistantSharedTextStore.swift b/iOSClient/Assistant/NCAssistantSharedTextStore.swift similarity index 100% rename from Share/Assistant/NCAssistantSharedTextStore.swift rename to iOSClient/Assistant/NCAssistantSharedTextStore.swift From 5441f0ef3c7c86d93b57851fc4de507e886dd723 Mon Sep 17 00:00:00 2001 From: Marino Faggiana Date: Thu, 14 May 2026 11:53:29 +0200 Subject: [PATCH 20/22] closed Signed-off-by: Marino Faggiana --- Nextcloud.xcodeproj/project.pbxproj | 96 +++++++++++--------------- Share/NCShareExtension+Assistant.swift | 93 ++++++++----------------- 2 files changed, 72 insertions(+), 117 deletions(-) diff --git a/Nextcloud.xcodeproj/project.pbxproj b/Nextcloud.xcodeproj/project.pbxproj index 795957f7aa..99c94dc92b 100644 --- a/Nextcloud.xcodeproj/project.pbxproj +++ b/Nextcloud.xcodeproj/project.pbxproj @@ -750,6 +750,9 @@ F7C55C9A2FB5B127004A974F /* ThreadSafeDictionary.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7245923289BB50B00474787 /* ThreadSafeDictionary.swift */; }; F7C55C9B2FB5B1A7004A974F /* UIColor+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = F70CEF5523E9C7E50007035B /* UIColor+Extension.swift */; }; F7C55C9F2FB5B83A004A974F /* NextcloudKit in Frameworks */ = {isa = PBXBuildFile; productRef = F7C55C9E2FB5B83A004A974F /* NextcloudKit */; }; + F7C55CC92FB5CE74004A974F /* ActionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7C55CC32FB5CE74004A974F /* ActionViewController.swift */; }; + F7C55CCA2FB5CE74004A974F /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F7C55CC42FB5CE74004A974F /* Images.xcassets */; }; + F7C55CCC2FB5CE74004A974F /* MainInterface.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F7C55CC72FB5CE74004A974F /* MainInterface.storyboard */; }; F7C687E92D22BD46004757BC /* NCManageDatabase+RecommendedFiles.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7C687E82D22BD46004757BC /* NCManageDatabase+RecommendedFiles.swift */; }; F7C687EA2D22BDE5004757BC /* NCManageDatabase+RecommendedFiles.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7C687E82D22BD46004757BC /* NCManageDatabase+RecommendedFiles.swift */; }; F7C687EB2D22BDE5004757BC /* NCManageDatabase+RecommendedFiles.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7C687E82D22BD46004757BC /* NCManageDatabase+RecommendedFiles.swift */; }; @@ -1736,6 +1739,9 @@ F7C55C502FB4A651004A974F /* NCAssistantInputModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCAssistantInputModel.swift; sourceTree = ""; }; F7C55C7A2FB5AEF7004A974F /* Action Assistant.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "Action Assistant.appex"; sourceTree = BUILT_PRODUCTS_DIR; }; F7C55C7B2FB5AEF7004A974F /* UniformTypeIdentifiers.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UniformTypeIdentifiers.framework; path = System/Library/Frameworks/UniformTypeIdentifiers.framework; sourceTree = SDKROOT; }; + F7C55CC32FB5CE74004A974F /* ActionViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActionViewController.swift; sourceTree = ""; }; + F7C55CC42FB5CE74004A974F /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; + F7C55CC62FB5CE74004A974F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/MainInterface.storyboard; sourceTree = ""; }; F7C687E82D22BD46004757BC /* NCManageDatabase+RecommendedFiles.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NCManageDatabase+RecommendedFiles.swift"; sourceTree = ""; }; F7C7B488245EBA4100D93E60 /* NCViewerQuickLook.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NCViewerQuickLook.swift; sourceTree = ""; }; F7C9555221F0C4CA0024296E /* NCActivity.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = NCActivity.storyboard; sourceTree = ""; }; @@ -1858,19 +1864,8 @@ F7FFFCA32FB3088D0015441E /* NCShareExtension+Assistant.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NCShareExtension+Assistant.swift"; sourceTree = ""; }; /* End PBXFileReference section */ -/* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */ - F7C55C8B2FB5AEF7004A974F /* PBXFileSystemSynchronizedBuildFileExceptionSet */ = { - isa = PBXFileSystemSynchronizedBuildFileExceptionSet; - membershipExceptions = ( - Info.plist, - ); - target = F7C55C792FB5AEF7004A974F /* Action Assistant */; - }; -/* End PBXFileSystemSynchronizedBuildFileExceptionSet section */ - /* Begin PBXFileSystemSynchronizedRootGroup section */ AA517BB42D66149900F8D37C /* .tx */ = {isa = PBXFileSystemSynchronizedRootGroup; explicitFileTypes = {}; explicitFolders = (); path = .tx; sourceTree = ""; }; - F7C55C7D2FB5AEF7004A974F /* Action Assistant */ = {isa = PBXFileSystemSynchronizedRootGroup; exceptions = (F7C55C8B2FB5AEF7004A974F /* PBXFileSystemSynchronizedBuildFileExceptionSet */, ); explicitFileTypes = {}; explicitFolders = (); path = "Action Assistant"; sourceTree = ""; }; /* End PBXFileSystemSynchronizedRootGroup section */ /* Begin PBXFrameworksBuildPhase section */ @@ -2209,6 +2204,7 @@ F7C55C502FB4A651004A974F /* NCAssistantInputModel.swift */, F3A047962BD2668800658E7B /* NCAssistant.swift */, F3A047932BD2668800658E7B /* NCAssistantModel.swift */, + F7FFFC9D2FB300440015441E /* NCAssistantSharedTextStore.swift */, F3DDFE0D2F15452F00A784C8 /* Chat */, F3DDFE1F2F1F951000A784C8 /* Chat Sessions */, F3A047902BD2668800658E7B /* Create Task */, @@ -3023,13 +3019,13 @@ F7C0F46D1C8880540059EC54 /* Share */ = { isa = PBXGroup; children = ( - F7FFFCA12FB3004B0015441E /* Assistant */, F714803A262EBE3900693E51 /* MainInterface.storyboard */, F7148040262EBE4000693E51 /* NCShareExtension.swift */, F7A573682E190377009C9257 /* NCShareExtensionData.swift */, AF730AF927843E4C00B7520E /* NCShareExtension+NCAccountRequestDelegate.swift */, AF22B215277D196700DAB0CC /* NCShareExtension+DataSource.swift */, AF22B216277D196700DAB0CC /* NCShareExtension+Files.swift */, + F7FFFCA32FB3088D0015441E /* NCShareExtension+Assistant.swift */, AF22B20B277C6F4D00DAB0CC /* NCShareCell.swift */, F7148046262EBE4B00693E51 /* Share-Bridging-Header.h */, ); @@ -3066,6 +3062,16 @@ path = E2EE; sourceTree = ""; }; + F7C55CC82FB5CE74004A974F /* Action Assistant */ = { + isa = PBXGroup; + children = ( + F7C55CC32FB5CE74004A974F /* ActionViewController.swift */, + F7C55CC42FB5CE74004A974F /* Images.xcassets */, + F7C55CC72FB5CE74004A974F /* MainInterface.storyboard */, + ); + path = "Action Assistant"; + sourceTree = ""; + }; F7C9739328F17131002C43E2 /* WidgetDashboardIntentHandler */ = { isa = PBXGroup; children = ( @@ -3294,7 +3300,7 @@ 2C33C48023E2C475005F963B /* Notification Service Extension */, F7346E1428B0EF5B006CE2D2 /* Widget */, F7C9739328F17131002C43E2 /* WidgetDashboardIntentHandler */, - F7C55C7D2FB5AEF7004A974F /* Action Assistant */, + F7C55CC82FB5CE74004A974F /* Action Assistant */, F7FC7D651DC1F98700BB2C6A /* Products */, F30A962A2A27A9C800D7BCFE /* Tests */, F771E3D020E2392D00AFB62D /* File Provider Extension.appex */, @@ -3430,15 +3436,6 @@ path = Account; sourceTree = ""; }; - F7FFFCA12FB3004B0015441E /* Assistant */ = { - isa = PBXGroup; - children = ( - F7FFFC9D2FB300440015441E /* NCAssistantSharedTextStore.swift */, - F7FFFCA32FB3088D0015441E /* NCShareExtension+Assistant.swift */, - ); - path = Assistant; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -3725,9 +3722,6 @@ ); dependencies = ( ); - fileSystemSynchronizedGroups = ( - F7C55C7D2FB5AEF7004A974F /* Action Assistant */, - ); name = "Action Assistant"; packageProductDependencies = ( F7C55C9E2FB5B83A004A974F /* NextcloudKit */, @@ -4104,6 +4098,8 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + F7C55CCA2FB5CE74004A974F /* Images.xcassets in Resources */, + F7C55CCC2FB5CE74004A974F /* MainInterface.storyboard in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4911,6 +4907,7 @@ files = ( F7C55C8F2FB5B045004A974F /* NCBrand.swift in Sources */, F7C55C8E2FB5B03D004A974F /* NCGlobal.swift in Sources */, + F7C55CC92FB5CE74004A974F /* ActionViewController.swift in Sources */, F7C55C9B2FB5B1A7004A974F /* UIColor+Extension.swift in Sources */, F7C55C8D2FB5B02C004A974F /* NCAssistantSharedTextStore.swift in Sources */, F7C55C9A2FB5B127004A974F /* ThreadSafeDictionary.swift in Sources */, @@ -5199,6 +5196,14 @@ name = Intent.intentdefinition; sourceTree = ""; }; + F7C55CC72FB5CE74004A974F /* MainInterface.storyboard */ = { + isa = PBXVariantGroup; + children = ( + F7C55CC62FB5CE74004A974F /* Base */, + ); + name = MainInterface.storyboard; + sourceTree = ""; + }; F7E70DE91A24DE4100E1B66A /* Localizable.strings */ = { isa = PBXVariantGroup; children = ( @@ -5612,7 +5617,7 @@ OTHER_LDFLAGS = ""; PRODUCT_BUNDLE_IDENTIFIER = it.twsweb.Nextcloud.Share; PRODUCT_NAME = "$(TARGET_NAME)"; - SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; SUPPORTS_MACCATALYST = NO; SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = YES; @@ -5636,7 +5641,7 @@ OTHER_LDFLAGS = ""; PRODUCT_BUNDLE_IDENTIFIER = it.twsweb.Nextcloud.Share; PRODUCT_NAME = "$(TARGET_NAME)"; - SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; SUPPORTS_MACCATALYST = NO; SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = YES; @@ -5807,7 +5812,6 @@ F7C55C892FB5AEF7004A974F /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -5818,9 +5822,8 @@ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_ENTITLEMENTS = "Action Assistant/Action Assistant.entitlements"; + CODE_SIGN_ENTITLEMENTS = "$(SRCROOT)/Brand/Action_Assistant.entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu17; GCC_DYNAMIC_NO_PIC = NO; @@ -5831,34 +5834,25 @@ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = "Action Assistant/Info.plist"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@executable_path/../../Frameworks", - ); + INFOPLIST_FILE = "$(SRCROOT)/Brand/Action_Assistant.plist"; LOCALIZATION_PREFERS_STRING_CATALOGS = YES; - MARKETING_VERSION = 1.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = "it.twsweb.Nextcloud.Action-Assistant"; PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; SKIP_INSTALL = YES; STRING_CATALOG_GENERATE_SYMBOLS = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; + SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) EXTENSION"; 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 = Debug; }; F7C55C8A2FB5AEF7004A974F /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -5869,35 +5863,27 @@ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_ENTITLEMENTS = "Action Assistant/Action Assistant.entitlements"; + CODE_SIGN_ENTITLEMENTS = "$(SRCROOT)/Brand/Action_Assistant.entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; ENABLE_NS_ASSERTIONS = NO; ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu17; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = "Action Assistant/Info.plist"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@executable_path/../../Frameworks", - ); + INFOPLIST_FILE = "$(SRCROOT)/Brand/Action_Assistant.plist"; LOCALIZATION_PREFERS_STRING_CATALOGS = YES; - MARKETING_VERSION = 1.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = "it.twsweb.Nextcloud.Action-Assistant"; PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; SKIP_INSTALL = YES; STRING_CATALOG_GENERATE_SYMBOLS = YES; + SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) EXTENSION"; 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"; VALIDATE_PRODUCT = YES; }; name = Release; @@ -6038,6 +6024,7 @@ ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = "-v"; OTHER_LDFLAGS = ""; + SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) NC DEBUG"; SWIFT_OBJC_INTEROP_MODE = ""; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -6103,6 +6090,7 @@ ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = "-v"; OTHER_LDFLAGS = ""; + SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) NC"; SWIFT_COMPILATION_MODE = wholemodule; SWIFT_OBJC_INTEROP_MODE = objc; diff --git a/Share/NCShareExtension+Assistant.swift b/Share/NCShareExtension+Assistant.swift index 162c594cc9..250ab85c2f 100644 --- a/Share/NCShareExtension+Assistant.swift +++ b/Share/NCShareExtension+Assistant.swift @@ -7,12 +7,8 @@ import UniformTypeIdentifiers import NextcloudKit extension NCShareExtension { - /// Handles selected text shared from another app and redirects it to the Assistant flow. - /// - /// - Parameter inputItems: Extension input items received from the host application. - /// - Returns: `true` when text was handled and the normal file upload flow must stop. func handleAssistantSharedTextIfNeeded(inputItems: [NSExtensionItem]) async -> Bool { - guard let text = await loadAssistantSharedText(from: inputItems), + guard let text = await loadText(from: inputItems), !text.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty else { return false } @@ -23,85 +19,56 @@ extension NCShareExtension { return true } - /// Loads the first valid text payload from the extension input items. - /// - /// - Parameter inputItems: Extension input items received from the host application. - /// - Returns: Shared text when available, otherwise `nil`. - private func loadAssistantSharedText(from inputItems: [NSExtensionItem]) async -> String? { + private func loadText(from inputItems: [NSExtensionItem]) async -> String? { for item in inputItems { guard let attachments = item.attachments else { continue } for provider in attachments { - if let text = await loadAssistantText(from: provider) { - return text - } - } - } - - return nil - } + let plainTextIdentifier = UTType.plainText.identifier + let textIdentifier = UTType.text.identifier - /// Loads text from an item provider when it exposes a supported text representation. - /// - /// - Parameter provider: Item provider received from the host application. - /// - Returns: Text content when the provider supports a text type. - private func loadAssistantText(from provider: NSItemProvider) async -> String? { - let plainTextIdentifier = UTType.plainText.identifier - let textIdentifier = UTType.text.identifier - - if provider.hasItemConformingToTypeIdentifier(plainTextIdentifier) { - return await loadAssistantString(from: provider, typeIdentifier: plainTextIdentifier) - } + if provider.hasItemConformingToTypeIdentifier(plainTextIdentifier) { + return await loadText(from: provider, typeIdentifier: plainTextIdentifier) + } - if provider.hasItemConformingToTypeIdentifier(textIdentifier) { - return await loadAssistantString(from: provider, typeIdentifier: textIdentifier) - } + if provider.hasItemConformingToTypeIdentifier(textIdentifier) { + return await loadText(from: provider, typeIdentifier: textIdentifier) + } - if provider.canLoadObject(ofClass: NSString.self) { - return await loadAssistantNSString(from: provider) + if provider.hasItemConformingToTypeIdentifier(UTType.text.identifier) { + return await loadText(from: provider, typeIdentifier: UTType.text.identifier) + } + } } return nil } - /// Loads a string payload using a specific uniform type identifier. - /// - /// - Parameters: - /// - provider: Item provider received from the host application. - /// - typeIdentifier: Uniform type identifier to load. - /// - Returns: String representation of the payload, when available. - private func loadAssistantString(from provider: NSItemProvider, typeIdentifier: String) async -> String? { + private func loadText(from provider: NSItemProvider, typeIdentifier: String) async -> String? { await withCheckedContinuation { continuation in provider.loadItem(forTypeIdentifier: typeIdentifier, options: nil) { item, _ in - if let text = item as? String { - continuation.resume(returning: text) - } else if let data = item as? Data, - let text = String(data: data, encoding: .utf8) { - continuation.resume(returning: text) - } else if let url = item as? URL, - let text = try? String(contentsOf: url, encoding: .utf8) { - continuation.resume(returning: text) + let text: String? + + if let string = item as? String { + text = string + } else if let attributedString = item as? NSAttributedString { + text = attributedString.string + } else if let data = item as? Data { + text = String(data: data, encoding: .utf8) + } else if let url = item as? URL { + text = try? String(contentsOf: url, encoding: .utf8) } else { - continuation.resume(returning: nil) + text = nil } - } - } - } - /// Loads an NSString object from the provided item provider. - /// - /// - Parameter provider: Item provider received from the host application. - /// - Returns: String value when NSString loading succeeds. - private func loadAssistantNSString(from provider: NSItemProvider) async -> String? { - await withCheckedContinuation { continuation in - provider.loadObject(ofClass: NSString.self) { object, _ in - if let string = object as? NSString { - continuation.resume(returning: string as String) - } else { + guard let text, !text.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty else { continuation.resume(returning: nil) + return } + + continuation.resume(returning: text) } } } From 73a78bf216e5150735615df2f04d81f387812667 Mon Sep 17 00:00:00 2001 From: Marino Faggiana Date: Thu, 14 May 2026 11:56:46 +0200 Subject: [PATCH 21/22] build 2 Signed-off-by: Marino Faggiana --- Nextcloud.xcodeproj/project.pbxproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Nextcloud.xcodeproj/project.pbxproj b/Nextcloud.xcodeproj/project.pbxproj index 99c94dc92b..de48cf1181 100644 --- a/Nextcloud.xcodeproj/project.pbxproj +++ b/Nextcloud.xcodeproj/project.pbxproj @@ -5993,7 +5993,7 @@ CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = NKUJUXUJ3B; @@ -6061,7 +6061,7 @@ CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = NKUJUXUJ3B; From 44f5b474247be7afacf22e01bc1bf0ea47e8d200 Mon Sep 17 00:00:00 2001 From: Marino Faggiana Date: Thu, 14 May 2026 12:24:33 +0200 Subject: [PATCH 22/22] appIcon Signed-off-by: Marino Faggiana --- .../AppIcon.appiconset/Contents.json | 6 +++--- .../AppIcon.appiconset/Senza titolo 1.png | Bin 0 -> 8422 bytes .../AppIcon.appiconset/Senza titolo 2.png | Bin 0 -> 8422 bytes .../AppIcon.appiconset/Senza titolo.png | Bin 0 -> 8422 bytes .../AppIcon.appiconset/sparkler 1.png | Bin 70621 -> 0 bytes .../AppIcon.appiconset/sparkler 2.png | Bin 70621 -> 0 bytes .../AppIcon.appiconset/sparkler.png | Bin 70621 -> 0 bytes 7 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 Action Assistant/Images.xcassets/AppIcon.appiconset/Senza titolo 1.png create mode 100644 Action Assistant/Images.xcassets/AppIcon.appiconset/Senza titolo 2.png create mode 100644 Action Assistant/Images.xcassets/AppIcon.appiconset/Senza titolo.png delete mode 100644 Action Assistant/Images.xcassets/AppIcon.appiconset/sparkler 1.png delete mode 100644 Action Assistant/Images.xcassets/AppIcon.appiconset/sparkler 2.png delete mode 100644 Action Assistant/Images.xcassets/AppIcon.appiconset/sparkler.png diff --git a/Action Assistant/Images.xcassets/AppIcon.appiconset/Contents.json b/Action Assistant/Images.xcassets/AppIcon.appiconset/Contents.json index 6b5c644d02..8f31f592a8 100644 --- a/Action Assistant/Images.xcassets/AppIcon.appiconset/Contents.json +++ b/Action Assistant/Images.xcassets/AppIcon.appiconset/Contents.json @@ -1,7 +1,7 @@ { "images" : [ { - "filename" : "sparkler.png", + "filename" : "Senza titolo.png", "idiom" : "universal", "platform" : "ios", "size" : "1024x1024" @@ -13,7 +13,7 @@ "value" : "dark" } ], - "filename" : "sparkler 1.png", + "filename" : "Senza titolo 1.png", "idiom" : "universal", "platform" : "ios", "size" : "1024x1024" @@ -25,7 +25,7 @@ "value" : "tinted" } ], - "filename" : "sparkler 2.png", + "filename" : "Senza titolo 2.png", "idiom" : "universal", "platform" : "ios", "size" : "1024x1024" diff --git a/Action Assistant/Images.xcassets/AppIcon.appiconset/Senza titolo 1.png b/Action Assistant/Images.xcassets/AppIcon.appiconset/Senza titolo 1.png new file mode 100644 index 0000000000000000000000000000000000000000..a1fe849708260b9eda0f8d0225cc36f733e7f352 GIT binary patch literal 8422 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 T-Sq|me@ymU>?_#oa_N5nXSqlu diff --git a/Action Assistant/Images.xcassets/AppIcon.appiconset/sparkler 2.png b/Action Assistant/Images.xcassets/AppIcon.appiconset/sparkler 2.png deleted file mode 100644 index fdf882770056b8b8441196bfc3773107f88d8723..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70621 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 T-Sq|me@ymU>?_#oa_N5nXSqlu diff --git a/Action Assistant/Images.xcassets/AppIcon.appiconset/sparkler.png b/Action Assistant/Images.xcassets/AppIcon.appiconset/sparkler.png deleted file mode 100644 index fdf882770056b8b8441196bfc3773107f88d8723..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70621 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 T-Sq|me@ymU>?_#oa_N5nXSqlu