mirror of
https://github.com/nextcloud/desktop.git
synced 2024-11-28 19:58:56 +03:00
624b72bd80
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
31 lines
1,014 B
Swift
31 lines
1,014 B
Swift
//
|
|
// FileProviderCommunication.swift
|
|
// FileProviderUIExt
|
|
//
|
|
// Created by Claudio Cambra on 30/7/24.
|
|
//
|
|
|
|
import FileProvider
|
|
|
|
enum FileProviderCommunicationError: Error {
|
|
case serviceNotFound
|
|
case remoteProxyObjectInvalid
|
|
}
|
|
|
|
func serviceConnection(
|
|
url: URL, interruptionHandler: @escaping () -> Void
|
|
) async throws -> FPUIExtensionService {
|
|
let services = try await FileManager().fileProviderServicesForItem(at: url)
|
|
guard let service = services[fpUiExtensionServiceName] else {
|
|
throw FileProviderCommunicationError.serviceNotFound
|
|
}
|
|
let connection: NSXPCConnection
|
|
connection = try await service.fileProviderConnection()
|
|
connection.remoteObjectInterface = NSXPCInterface(with: FPUIExtensionService.self)
|
|
connection.interruptionHandler = interruptionHandler
|
|
connection.resume()
|
|
guard let proxy = connection.remoteObjectProxy as? FPUIExtensionService else {
|
|
throw FileProviderCommunicationError.remoteProxyObjectInvalid
|
|
}
|
|
return proxy
|
|
}
|