From cbf625f220d587218e94e35f42aeea946afac02f Mon Sep 17 00:00:00 2001 From: Milen Pivchev Date: Tue, 27 Oct 2026 13:02:39 +0100 Subject: [PATCH] fix(capabilities): Enable unified sharing only for supported API version Signed-off-by: Milen Pivchev --- .../UnifiedSharing/NKUnifiedSharingCapabilities.swift | 3 +++ Sources/NextcloudKit/NextcloudKit+Capabilities.swift | 10 ++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/Sources/NextcloudKit/Models/UnifiedSharing/NKUnifiedSharingCapabilities.swift b/Sources/NextcloudKit/Models/UnifiedSharing/NKUnifiedSharingCapabilities.swift index 91185a2f..a129d708 100644 --- a/Sources/NextcloudKit/Models/UnifiedSharing/NKUnifiedSharingCapabilities.swift +++ b/Sources/NextcloudKit/Models/UnifiedSharing/NKUnifiedSharingCapabilities.swift @@ -6,6 +6,9 @@ import Foundation /// The `sharing` block of the server capabilities, describing unified-sharing support. public struct NKUnifiedSharingCapabilities: Codable, Sendable { + /// The unified-sharing API version this client implements. + static let unifiedShareApiVersion = "v1" + public let apiVersions: [String] public let sourceTypes: [NKUnifiedShareSourceType] public let permissionPresets: [NKUnifiedSharePermissionPreset] diff --git a/Sources/NextcloudKit/NextcloudKit+Capabilities.swift b/Sources/NextcloudKit/NextcloudKit+Capabilities.swift index 1c2e040f..5eb1e17e 100644 --- a/Sources/NextcloudKit/NextcloudKit+Capabilities.swift +++ b/Sources/NextcloudKit/NextcloudKit+Capabilities.swift @@ -155,7 +155,13 @@ public extension NextcloudKit { struct Governance: Codable {} - struct Sharing: Codable {} + struct Sharing: Codable { + let apiVersions: [String]? + + enum CodingKeys: String, CodingKey { + case apiVersions = "api_versions" + } + } struct DownloadLimit: Codable { let enabled: Bool? @@ -399,7 +405,7 @@ public extension NextcloudKit { capabilities.fileSharingDownloadLimit = json.downloadLimit?.enabled ?? false capabilities.fileSharingDownloadLimitDefaultLimit = json.downloadLimit?.defaultLimit ?? 1 - capabilities.unifiedSharingEnabled = json.sharing != nil + capabilities.unifiedSharingEnabled = json.sharing?.apiVersions?.contains(NKUnifiedSharingCapabilities.unifiedShareApiVersion) ?? false capabilities.themingColor = json.theming?.color ?? "" capabilities.themingColorElement = json.theming?.colorelement ?? ""