Ensure stripping of suffix vfs placeholder file's suffix when issuing delete command...
authorClaudio Cambra <claudio.cambra@nextcloud.com>
Wed, 26 Jun 2024 07:07:23 +0000 (15:07 +0800)
committerbackportbot[bot] <backportbot[bot]@users.noreply.github.com>
Fri, 28 Jun 2024 16:18:02 +0000 (16:18 +0000)
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
src/libsync/propagateremotedelete.cpp

index 306ed4b1d73bf7b0e7ebe3ed7ca4d8d6d31c905a..7bc5be95288898c3d156837398fa4671f9cd5e25 100644 (file)
@@ -58,12 +58,19 @@ void PropagateRemoteDelete::start()
 
 void PropagateRemoteDelete::createDeleteJob(const QString &filename)
 {
-    qCInfo(lcPropagateRemoteDelete) << "Deleting file, local" << _item->_file << "remote" << filename;
+    Q_ASSERT(propagator());
+    auto remoteFilename = filename;
+    if (_item->_type == ItemType::ItemTypeVirtualFile) {
+        if (const auto vfs = propagator()->syncOptions()._vfs; vfs->mode() == Vfs::Mode::WithSuffix) {
+            // These are compile-time constants so no need to recreate each time
+            static constexpr auto suffixSize = std::string_view(APPLICATION_DOTVIRTUALFILE_SUFFIX).size();
+            remoteFilename.chop(suffixSize);
+        }
+    }
 
-    _job = new DeleteJob(propagator()->account(),
-        propagator()->fullRemotePath(filename),
-        this);
+    qCInfo(lcPropagateRemoteDelete) << "Deleting file, local" << _item->_file << "remote" << remoteFilename;
 
+    _job = new DeleteJob(propagator()->account(), propagator()->fullRemotePath(remoteFilename), this);
     connect(_job.data(), &DeleteJob::finishedSignal, this, &PropagateRemoteDelete::slotDeleteJobFinished);
     propagator()->_activeJobList.append(this);
     _job->start();