Grab account keychain entry identifier data from socket in FileProviderExt
authorClaudio Cambra <claudio.cambra@nextcloud.com>
Fri, 30 Dec 2022 18:52:51 +0000 (19:52 +0100)
committerClaudio Cambra <claudio.cambra@nextcloud.com>
Fri, 12 May 2023 05:21:09 +0000 (13:21 +0800)
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderExtension.swift
shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderSocketLineProcessor.swift

index b162508daedb7e05051c54a0a3d9631ece2886b3..f31f02b97d31b78e47dd01a761bf30003ddd2735 100644 (file)
@@ -19,6 +19,7 @@ import NCDesktopClientSocketKit
 class FileProviderExtension: NSObject, NSFileProviderReplicatedExtension {
     let domain: NSFileProviderDomain
     var socketClient: LocalSocketClient = LocalSocketClient()
+    var ncAccount: FileProviderDomainNextcloudAccountData  = FileProviderDomainNextcloudAccountData()
 
     required init(domain: NSFileProviderDomain) {
         self.domain = domain
@@ -93,10 +94,14 @@ class FileProviderExtension: NSObject, NSFileProviderReplicatedExtension {
         self.socketClient.start();
     }
 
-    func sendDelegateFileProviderDomainIdentifier() {
+    func sendFileProviderDomainIdentifier() {
         let command = "FILE_PROVIDER_DOMAIN_IDENTIFIER_REQUEST_REPLY"
         let argument = domain.identifier.rawValue
         let message = command + ":" + argument + "\n"
         socketClient.sendMessage(message)
     }
+
+    func setupDomainAccount(keychainAccount:String) {
+        ncAccount = FileProviderDomainNextcloudAccountData(withKeychainAccount:keychainAccount)
+    }
 }
index 038bb7426c4a20704a18860aa51e41779125a991..5589e101e70725b4ec649e2a420f7528980390c0 100644 (file)
@@ -25,7 +25,7 @@ class FileProviderSocketLineProcessor: NSObject, LineProcessor {
     func process(_ line: String) {
         NSLog("Processing file provider line: %@", line)
 
-        let splitLine = line.split(separator: ":")
+        let splitLine = line.split(separator: ":", maxSplits: 1)
         guard let commandSubsequence = splitLine.first else {
             NSLog("Input line did not have a first element")
             return;
@@ -34,7 +34,11 @@ class FileProviderSocketLineProcessor: NSObject, LineProcessor {
 
         NSLog("Received command: %@", command)
         if (command == "SEND_FILE_PROVIDER_DOMAIN_IDENTIFIER") {
-            delegate.sendDelegateFileProviderDomainIdentifier()
+            delegate.sendFileProviderDomainIdentifier()
+        } else if (command == "ACCOUNT_KEYCHAIN_NAME") {
+            guard let keychainAccountSubsequence = splitLine.last else { return }
+            let keychainAccountString = String(keychainAccountSubsequence)
+            delegate.setupDomainAccount(keychainAccount:keychainAccountString)
         }
     }
 }