Add init for ShareCapabilities

Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
This commit is contained in:
Claudio Cambra 2024-03-18 17:51:10 +08:00
parent 3ffcd6de42
commit 8039fcd951
2 changed files with 20 additions and 0 deletions

View File

@ -11,6 +11,7 @@ extension Logger {
private static var subsystem = Bundle.main.bundleIdentifier!
static let actionViewController = Logger(subsystem: subsystem, category: "actionViewController")
static let shareCapabilities = Logger(subsystem: subsystem, category: "shareCapabilities")
static let shareController = Logger(subsystem: subsystem, category: "shareController")
static let sharesDataSource = Logger(subsystem: subsystem, category: "sharesDataSource")
static let shareOptionsView = Logger(subsystem: subsystem, category: "shareOptionsView")

View File

@ -68,4 +68,23 @@ struct ShareCapabilities {
private(set) var defaultPermissions = 0
private(set) var email = EmailCapabilities(dict: [:])
private(set) var publicLink = PublicLinkCapabilities(dict: [:])
init(json: Data) {
guard let anyJson = try? JSONSerialization.jsonObject(with: json, options: []),
let jsonDict = anyJson as? [String : Any],
let sharingCapabilities = jsonDict["files_sharing"] as? [String : Any]
else {
Logger.shareCapabilities.error("Could not parse share capabilities!")
return
}
apiEnabled = sharingCapabilities["api_enabled"] as? Bool ?? false
if let emailCapabilities = sharingCapabilities["sharebymail"] as? [String : Any] {
email = EmailCapabilities(dict: emailCapabilities)
}
if let publicLinkCapabilities = sharingCapabilities["public"] as? [String : Any] {
publicLink = PublicLinkCapabilities(dict: publicLinkCapabilities)
}
}
}