Ensure we are checking lock state once file has been synced after setting lock
authorClaudio Cambra <claudio.cambra@nextcloud.com>
Mon, 5 Dec 2022 20:22:08 +0000 (21:22 +0100)
committerClaudio Cambra <claudio.cambra@nextcloud.com>
Wed, 7 Dec 2022 11:45:31 +0000 (12:45 +0100)
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
src/gui/editlocallyjob.cpp

index 489b027edfb73626d1f4dc19774bfaa8f58e85d4..a248c6b50873b9a99b2511b1845bdc9a5c238e1f 100644 (file)
@@ -566,22 +566,23 @@ void EditLocallyJob::lockFile()
         return;
     }
 
-    _folderConnections.append(connect(_accountState->account().data(), &Account::lockFileSuccess,
-                                      this, [this] {
-        _folderForFile->journalDb()->schedulePathForRemoteDiscovery(_relPath);
-        _folderForFile->scheduleThisFolderSoon();
-    }));
-    _folderConnections.append(connect(_folderForFile, &Folder::syncFinished,
-                                      this, [this](const OCC::SyncResult &result) {
-        Q_UNUSED(result)
-        fileLockSuccess();
+    _folderForFile->setSyncPaused(true);
+
+    _folderConnections.append(connect(&_folderForFile->syncEngine(), &SyncEngine::itemCompleted,
+                                      this, [this](const SyncFileItemPtr &item) {
+        if (item->_file == _relPath && item->_locked == SyncFileItem::LockStatus::LockedItem) {
+            fileLockSuccess();
+        }
     }));
+
     _folderConnections.append(connect(_accountState->account().data(), &Account::lockFileError,
                                       this, &EditLocallyJob::fileLockError));
 
     _folderForFile->accountState()->account()->setLockFileState(_relPath,
                                                                 _folderForFile->journalDb(),
                                                                 SyncFileItem::LockStatus::LockedItem);
+    _folderForFile->journalDb()->schedulePathForRemoteDiscovery(_relPath);
+    FolderMan::instance()->forceSyncForFolder(_folderForFile);
 }
 
 void EditLocallyJob::disconnectFolderSignals()