From fa735fdac4b42d88343f5fc4df1c2200342de5bf Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Wed, 26 Jun 2024 15:07:23 +0800 Subject: [PATCH] Ensure stripping of suffix vfs placeholder file's suffix when issuing delete command to server Signed-off-by: Claudio Cambra --- src/libsync/propagateremotedelete.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/libsync/propagateremotedelete.cpp b/src/libsync/propagateremotedelete.cpp index 306ed4b1d73b..7bc5be952888 100644 --- a/src/libsync/propagateremotedelete.cpp +++ b/src/libsync/propagateremotedelete.cpp @@ -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();