Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 21 additions & 2 deletions Sources/NextcloudKit/Models/NKDataFileXML.swift
Original file line number Diff line number Diff line change
Expand Up @@ -429,8 +429,27 @@ public class NKDataFileXML: NSObject {
file.richWorkspace = richWorkspace
}

if let lock = NKLock(xml: propstat["d:prop"]) {
file.lock = lock
if let lock = propstat["d:prop", "nc:lock"].int {
file.lock = lock > 0
}

if let lockOwner = propstat["d:prop", "nc:lock-owner"].text {
file.lockOwner = lockOwner
}
if let lockOwnerEditor = propstat["d:prop", "nc:lock-owner-editor"].text {
file.lockOwnerEditor = lockOwnerEditor
}
if let lockOwnerType = propstat["d:prop", "nc:lock-owner-type"].int {
file.lockOwnerType = lockOwnerType
}
if let lockOwnerDisplayName = propstat["d:prop", "nc:lock-owner-displayname"].text {
file.lockOwnerDisplayName = lockOwnerDisplayName
}
if let lockTime = propstat["d:prop", "nc:lock-time"].int {
file.lockTime = Date(timeIntervalSince1970: TimeInterval(lockTime))
}
if let lockTimeOut = propstat["d:prop", "nc:lock-timeout"].int {
file.lockTimeOut = file.lockTime?.addingTimeInterval(TimeInterval(lockTimeOut))
}

let tagsElements = propstat["d:prop", "nc:system-tags"]
Expand Down
27 changes: 20 additions & 7 deletions Sources/NextcloudKit/Models/NKFile.swift
Original file line number Diff line number Diff line change
Expand Up @@ -38,12 +38,13 @@ public struct NKFile: Sendable {
public var ocId: String
public var ownerId: String
public var ownerDisplayName: String

///
/// An optional lock on this file. `nil` equals the file not being locked.
///
public var lock: NKLock?

public var lock: Bool
public var lockOwner: String
public var lockOwnerEditor: String
public var lockOwnerType: Int
public var lockOwnerDisplayName: String
public var lockTime: Date?
public var lockTimeOut: Date?
public var path: String
public var permissions: String
public var quotaUsedBytes: Int64
Expand Down Expand Up @@ -109,7 +110,13 @@ public struct NKFile: Sendable {
ocId: String = "",
ownerId: String = "",
ownerDisplayName: String = "",
lock: NKLock? = nil,
lock: Bool = false,
lockOwner: String = "",
lockOwnerEditor: String = "",
lockOwnerType: Int = 0,
lockOwnerDisplayName: String = "",
lockTime: Date? = nil,
lockTimeOut: Date? = nil,
path: String = "",
permissions: String = "",
quotaUsedBytes: Int64 = 0,
Expand Down Expand Up @@ -167,6 +174,12 @@ public struct NKFile: Sendable {
self.ownerId = ownerId
self.ownerDisplayName = ownerDisplayName
self.lock = lock
self.lockOwner = lockOwner
self.lockOwnerEditor = lockOwnerEditor
self.lockOwnerType = lockOwnerType
self.lockOwnerDisplayName = lockOwnerDisplayName
self.lockTime = lockTime
self.lockTimeOut = lockTimeOut
self.path = path
self.permissions = permissions
self.quotaUsedBytes = quotaUsedBytes
Expand Down
12 changes: 6 additions & 6 deletions Sources/NextcloudKit/Models/NKLock.swift
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public struct NKLock: Equatable, Sendable {
///
/// App id of an app owned lock to allow clients to suggest joining the collaborative editing session through the web or direct editing.
///
public let ownerEditor: String
public let ownerEditor: String?

///
/// What kind of lock this is.
Expand Down Expand Up @@ -53,19 +53,19 @@ public struct NKLock: Equatable, Sendable {
/// This is intended for creating an instance based on a superset of required properties returned by a `PROPFIND` request to the server about an item.
///
public init?(xml properties: XML.Accessor) {
guard let isLocked = properties["nc:lock"].bool else {
guard let rawIsLocked = properties["nc:lock"].int else {
return nil
}

guard let owner = properties["nc:lock-owner"].text else {
guard rawIsLocked > 0 else {
return nil
}

guard let ownerDisplayName = properties["nc:lock-owner-displayname"].text else {
guard let owner = properties["nc:lock-owner"].text else {
return nil
}

guard let ownerEditor = properties["nc:lock-owner-editor"].text else {
guard let ownerDisplayName = properties["nc:lock-owner-displayname"].text else {
return nil
}

Expand All @@ -84,7 +84,7 @@ public struct NKLock: Equatable, Sendable {
let lockToken = properties["nc:lock-token"].text

self.owner = owner
self.ownerEditor = ownerEditor
self.ownerEditor = properties["nc:lock-owner-editor"].text
self.ownerType = lockOwnerType
self.ownerDisplayName = ownerDisplayName
self.time = Date(timeIntervalSince1970: rawTime)
Expand Down
Loading