Bugfix. Files lock. Check lock owner type for setting readonly based on server capabi...
authoralex-z <blackslayer4@gmail.com>
Mon, 29 Apr 2024 19:57:02 +0000 (21:57 +0200)
committerClaudio Cambra <claudio.cambra@nextcloud.com>
Fri, 17 May 2024 08:12:26 +0000 (10:12 +0200)
Signed-off-by: alex-z <blackslayer4@gmail.com>
src/libsync/syncengine.cpp

index 4a9f656a4712bd02652040cc8d944159792e8ac4..8f8dcecec31ca0f92fa993d510245ebbf5b975ca 100644 (file)
@@ -390,7 +390,11 @@ void OCC::SyncEngine::slotItemDiscovered(const OCC::SyncFileItemPtr &item)
             }
 
             if (item->_type == CSyncEnums::ItemTypeVirtualFile) {
-                if (item->_locked == SyncFileItem::LockStatus::LockedItem && (item->_lockOwnerType != SyncFileItem::LockOwnerType::TokenLock || item->_lockOwnerId != account()->davUser())) {
+                const auto lockOwnerTypeToSkipReadonly = _account->capabilities().filesLockTypeAvailable()
+                    ? SyncFileItem::LockOwnerType::TokenLock
+                    : SyncFileItem::LockOwnerType::UserLock;
+                if (item->_locked == SyncFileItem::LockStatus::LockedItem
+                    && (item->_lockOwnerType != lockOwnerTypeToSkipReadonly || item->_lockOwnerId != account()->davUser())) {
                     qCDebug(lcEngine()) << filePath << "file is locked: making it read only";
                     FileSystem::setFileReadOnly(filePath, true);
                 } else {