From 4a21b290d205dcce4fdd3a0ac4cdbd4a56442a37 Mon Sep 17 00:00:00 2001 From: alex-z Date: Fri, 15 Mar 2024 17:04:16 +0100 Subject: [PATCH] Bugfix. Files-lock. Inorrect readonly state for TokenLock. Signed-off-by: alex-z --- src/libsync/propagatedownload.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/libsync/propagatedownload.cpp b/src/libsync/propagatedownload.cpp index 8859b15e9a02b..a690650fe523b 100644 --- a/src/libsync/propagatedownload.cpp +++ b/src/libsync/propagatedownload.cpp @@ -1371,7 +1371,12 @@ void PropagateDownloadFile::updateMetadata(bool isConflict) handleRecallFile(fn, propagator()->localPath(), *propagator()->_journal); } - if (_item->_locked == SyncFileItem::LockStatus::LockedItem && (_item->_lockOwnerType != SyncFileItem::LockOwnerType::UserLock || _item->_lockOwnerId != propagator()->account()->davUser())) { + const auto isLockOwnedByCurrentUser = _item->_lockOwnerId == propagator()->account()->davUser(); + + const auto isUserLockOwnedByCurrentUser = (_item->_lockOwnerType == SyncFileItem::LockOwnerType::UserLock && isLockOwnedByCurrentUser); + const auto isTokenLockOwnedByCurrentUser = (_item->_lockOwnerType == SyncFileItem::LockOwnerType::TokenLock && isLockOwnedByCurrentUser); + + if (_item->_locked == SyncFileItem::LockStatus::LockedItem && !isUserLockOwnedByCurrentUser && !isTokenLockOwnedByCurrentUser) { qCDebug(lcPropagateDownload()) << fn << "file is locked: making it read only"; FileSystem::setFileReadOnly(fn, true); } else {