From 6ab3a2d9aab22959fdf3cbc03f993c6eeb6f9050 Mon Sep 17 00:00:00 2001 From: Camila Ayres Date: Tue, 4 Jun 2024 20:30:32 +0200 Subject: [PATCH] Fix #3144: check for promptDeleteAllFiles config setting before emitting signal to display warning. The signal is not connected to any slot when running nextcloudcmd. The callback to finish the sync was never being called because the check for the config was done in the slot, which was never called. Signed-off-by: Camila Ayres --- src/gui/folder.cpp | 8 +------- src/libsync/syncengine.cpp | 8 ++++---- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/src/gui/folder.cpp b/src/gui/folder.cpp index aa755fdf1e6a0..66e194d16580b 100644 --- a/src/gui/folder.cpp +++ b/src/gui/folder.cpp @@ -1628,12 +1628,6 @@ bool Folder::virtualFilesEnabled() const void Folder::slotAboutToRemoveAllFiles(SyncFileItem::Direction dir, std::function callback) { - ConfigFile cfgFile; - if (!cfgFile.promptDeleteFiles()) { - callback(false); - return; - } - const QString msg = dir == SyncFileItem::Down ? tr("All files in the sync folder \"%1\" folder were deleted on the server.\n" "These deletes will be synchronized to your local sync folder, making such files " "unavailable unless you have a right to restore. \n" @@ -1644,7 +1638,7 @@ void Folder::slotAboutToRemoveAllFiles(SyncFileItem::Direction dir, std::functio "Are you sure you want to sync those actions with the server?\n" "If this was an accident and you decide to keep your files, they will be re-synced from the server."); auto msgBox = new QMessageBox(QMessageBox::Warning, tr("Remove All Files?"), - msg.arg(shortGuiLocalPath()), QMessageBox::NoButton); + msg.arg(shortGuiLocalPath()), QMessageBox::NoButton); msgBox->setAttribute(Qt::WA_DeleteOnClose); msgBox->setWindowFlags(msgBox->windowFlags() | Qt::WindowStaysOnTopHint); msgBox->addButton(tr("Remove all files"), QMessageBox::DestructiveRole); diff --git a/src/libsync/syncengine.cpp b/src/libsync/syncengine.cpp index 8f8dcecec31ca..77fcf5174f1a7 100644 --- a/src/libsync/syncengine.cpp +++ b/src/libsync/syncengine.cpp @@ -898,17 +898,17 @@ void SyncEngine::slotDiscoveryFinished() qCInfo(lcEngine) << "#### Post-Reconcile end #################################################### " << _stopWatch.addLapTime(QStringLiteral("Post-Reconcile Finished")) << "ms"; }; - if (!_hasNoneFiles && _hasRemoveFile) { + if (!_hasNoneFiles && _hasRemoveFile && ConfigFile().promptDeleteFiles()) { qCInfo(lcEngine) << "All the files are going to be changed, asking the user"; int side = 0; // > 0 means more deleted on the server. < 0 means more deleted on the client - foreach (const auto &it, _syncItems) { + for (const auto &it : _syncItems) { if (it->_instruction == CSYNC_INSTRUCTION_REMOVE) { side += it->_direction == SyncFileItem::Down ? 1 : -1; } } - QPointer guard = new QObject(); - QPointer self = this; + const auto guard = new QObject(); + const auto self = this; auto callback = [this, self, finish, guard](bool cancel) -> void { // use a guard to ensure its only called once... // qpointer to self to ensure we still exist