Skip to content

Commit 44ad29c

Browse files
committed
Add models
Signed-off-by: Milen Pivchev <milen.pivchev@gmail.com>
1 parent c39a179 commit 44ad29c

2 files changed

Lines changed: 76 additions & 1 deletion

File tree

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
//
2+
// File.swift
3+
// NextcloudKit
4+
//
5+
// Created by Milen Pivchev on 10.07.25.
6+
//
7+
8+
import Foundation
9+
//
10+
//public struct NKDeclarativeUI {
11+
// public struct ContextMenu: Codable {
12+
// let title: String
13+
// let url: String
14+
// }
15+
//}
16+
17+
public struct DeclarativeUI: Codable {
18+
public let contextMenu: [ContextMenuItem]
19+
20+
enum CodingKeys: String, CodingKey {
21+
case contextMenu = "context-menu"
22+
}
23+
}
24+
25+
public struct ContextMenuItem: Codable {
26+
public let title: String
27+
public let endpoint: String
28+
29+
public init(from decoder: Decoder) throws {
30+
var container = try decoder.unkeyedContainer()
31+
title = try container.decode(String.self)
32+
endpoint = try container.decode(String.self)
33+
}
34+
35+
public func encode(to encoder: Encoder) throws {
36+
var container = encoder.unkeyedContainer()
37+
try container.encode(title)
38+
try container.encode(endpoint)
39+
}
40+
}

Sources/NextcloudKit/NextcloudKit+Capabilities.swift

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ public extension NextcloudKit {
127127
let assistant: Assistant?
128128
let recommendations: Recommendations?
129129
let termsOfService: TermsOfService?
130+
let declarativeUI: DeclarativeUI?
130131

131132
enum CodingKeys: String, CodingKey {
132133
case downloadLimit = "downloadlimit"
@@ -140,6 +141,7 @@ public extension NextcloudKit {
140141
case assistant
141142
case recommendations
142143
case termsOfService = "terms_of_service"
144+
case declarativeUI = "declarativeui"
143145
}
144146

145147
struct DownloadLimit: Codable {
@@ -329,6 +331,32 @@ public extension NextcloudKit {
329331
struct Recommendations: Codable {
330332
let enabled: Bool?
331333
}
334+
335+
// struct DeclarativeUI: Codable {
336+
// let contextMenu: [[ContextMenuItem]]
337+
//
338+
// enum CodingKeys: String, CodingKey {
339+
// case contextMenu = "context-menu"
340+
// }
341+
// }
342+
343+
//
344+
// struct DeclarativeUI: Codable {
345+
// let contextMenus: [ContextMenu]
346+
//
347+
// enum CodingKeys: String, CodingKey {
348+
// case contextMenus = "context-menu"
349+
// }
350+
//
351+
// struct ContextMenu: Codable {
352+
// let items
353+
// }
354+
//
355+
// struct ContextMenuItem: Codable {
356+
// let title: String
357+
// let endpoint: String
358+
// }
359+
// }
332360
}
333361
}
334362
}
@@ -346,6 +374,8 @@ public extension NextcloudKit {
346374
let data = decoded.ocs.data
347375
let json = data.capabilities
348376

377+
print(json)
378+
349379
// Initialize capabilities
350380
let capabilities = NKCapabilities.Capabilities()
351381

@@ -409,6 +439,9 @@ public extension NextcloudKit {
409439
capabilities.recommendations = json.recommendations?.enabled ?? false
410440
capabilities.termsOfService = json.termsOfService?.enabled ?? false
411441

442+
// capabilities.declarativeUIEnabled = !(json.declarativeUI?.contextMenu.isEmpty ?? false)
443+
// capabilities.declarativeUIContextMenu = json.declarativeUI?.contextMenu ?? []
444+
capabilities.declarativeUI = json.declarativeUI
412445
// Persist capabilities in shared store
413446
await NKCapabilities.shared.setCapabilities(for: account, capabilities: capabilities)
414447
return capabilities
@@ -484,7 +517,9 @@ final public class NKCapabilities: Sendable {
484517
public var forbiddenFileNameExtensions: [String] = []
485518
public var recommendations: Bool = false
486519
public var termsOfService: Bool = false
487-
520+
// public var declarativeUIEnabled: Bool = false
521+
// public var declarativeUIContextMenu: [ContextMenuItem] = []
522+
public var declarativeUI: DeclarativeUI? = nil
488523
public var directEditingEditors: [NKEditorDetailsEditor] = []
489524
public var directEditingCreators: [NKEditorDetailsCreator] = []
490525
public var directEditingTemplates: [NKEditorTemplate] = []

0 commit comments

Comments
 (0)