Bugfix. Files-lock. Inorrect readonly state for TokenLock.
authoralex-z <blackslayer4@gmail.com>
Fri, 15 Mar 2024 16:04:16 +0000 (17:04 +0100)
committerallexzander <allexzander@users.noreply.github.com>
Sun, 17 Mar 2024 16:02:54 +0000 (17:02 +0100)
Signed-off-by: alex-z <blackslayer4@gmail.com>
src/libsync/propagatedownload.cpp

index 8859b15e9a02b446eb6973aded328ecb788f6ab1..a690650fe523b0510f4926140a2e26390f103ced 100644 (file)
@@ -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 {