vfs: Reenable local metadata updating of vfs files
authorChristian Kamm <mail@ckamm.de>
Mon, 12 Nov 2018 11:24:08 +0000 (12:24 +0100)
committerKevin Ottens <kevin.ottens@nextcloud.com>
Tue, 15 Dec 2020 09:58:23 +0000 (10:58 +0100)
src/libsync/syncengine.cpp

index e482355677990baa9e7efb9e0f8ad5c3fc0fc247..e2fa5adff5740a3f1031c179db6bc2fa86637858 100644 (file)
@@ -331,9 +331,20 @@ void OCC::SyncEngine::slotItemDiscovered(const OCC::SyncFileItemPtr &item)
             if (rec._checksumHeader.isEmpty())
                 rec._checksumHeader = prev._checksumHeader;
             rec._serverHasIgnoredFiles |= prev._serverHasIgnoredFiles;
-            _journal->setFileRecord(rec);
 
-            // ### Update vfs metadata with Vfs::updateMetadata()
+            // Update on-disk virtual file metadata
+            if (item->_type == ItemTypeVirtualFile && _syncOptions._vfs) {
+                QString error;
+                if (!_syncOptions._vfs->updateMetadata(filePath, item->_modtime, item->_size, item->_fileId, &error)) {
+                    item->_instruction = CSYNC_INSTRUCTION_ERROR;
+                    item->_status = SyncFileItem::NormalError;
+                    item->_errorString = tr("Could not update virtual file metadata: %1").arg(error);
+                    return;
+                }
+            }
+
+            // Updating the db happens on success
+            _journal->setFileRecord(rec);
 
             // This might have changed the shared flag, so we must notify SyncFileStatusTracker for example
             emit itemCompleted(item);