From: Claudio Cambra Date: Mon, 19 Dec 2022 17:58:37 +0000 (+0100) Subject: Use e2ee folder blacklist instead of deleting folders directly X-Git-Tag: archive/raspbian/3.16.7-1_deb13u1+rpi1~1^2~12^2~11^2~30^2~15 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=1fc1e951611cbc4932d4daec1fe83813394e96d0;p=nextcloud-desktop.git Use e2ee folder blacklist instead of deleting folders directly Signed-off-by: Claudio Cambra --- diff --git a/src/gui/folder.cpp b/src/gui/folder.cpp index 8c4e54c6e..1137096b8 100644 --- a/src/gui/folder.cpp +++ b/src/gui/folder.cpp @@ -1335,51 +1335,28 @@ void Folder::slotAboutToRemoveAllFiles(SyncFileItem::Direction dir, std::functio void Folder::removeLocalE2eFiles() { qCDebug(lcFolder) << "Removing local E2EE files"; - QByteArrayList e2eFiles; - const auto couldGetFiles = _journal.getFilesBelowPath("", [&e2eFiles](const SyncJournalFileRecord &rec) { - if (rec._isE2eEncrypted) { - e2eFiles.append(rec._path); + QStringList e2eFoldersToBlacklist; + const auto couldGetFiles = _journal.getFilesBelowPath("", [&e2eFoldersToBlacklist](const SyncJournalFileRecord &rec) { + if (rec.isValid() && rec._isE2eEncrypted && rec.isDirectory()) { + e2eFoldersToBlacklist.append(rec._path); } }); if (!couldGetFiles) { - qCWarning(lcFolder) << "Could not fetch E2EE files to delete in this folder:" << path(); + qCWarning(lcFolder) << "Could not fetch E2EE folders to blacklist in this folder:" << path(); return; - } else if (e2eFiles.isEmpty()) { - qCWarning(lcFolder) << "No E2EE files found at path" << path(); + } else if (e2eFoldersToBlacklist.isEmpty()) { + qCWarning(lcFolder) << "No E2EE folders found at path" << path(); return; } const auto currentSyncPaused = syncPaused(); setSyncPaused(true); - qCInfo(lcFolder) << "About to remove: " << e2eFiles; + qCInfo(lcFolder) << "About to blacklist: " << e2eFoldersToBlacklist; - for (const auto &e2eFilePath : qAsConst(e2eFiles)) { - if (!_journal.deleteFileRecord(e2eFilePath, true)) { - qCWarning(lcFolder) << "Failed to delete file record from local DB" << e2eFilePath - << "it might have already been deleted."; - continue; - } - - qCInfo(lcFolder) << "Removing local copy of" << e2eFilePath; - - const auto fullPath = QString(path() + e2eFilePath); - const QFileInfo pathInfo(fullPath); - - if (pathInfo.isDir() && pathInfo.exists()) { - QDir dir(fullPath); - if (!dir.removeRecursively()) { - qCWarning(lcFolder) << "Unable to remove directory and contents at:" << fullPath; - } - } else if (pathInfo.exists()) { - if (!QFile::remove(fullPath)) { - qCWarning(lcFolder) << "Unable to delete file:" << fullPath; - } - } else { - qCWarning(lcFolder) << "Unable to delete:" << fullPath << "as it does not exist!"; - } - } + // Will get deleted from blacklist if encryption is set up again later + _journal.setSelectiveSyncList(SyncJournalDb::SelectiveSyncE2eFoldersToRemoveFromBlacklist, e2eFoldersToBlacklist); setSyncPaused(currentSyncPaused); _journal.forceRemoteDiscoveryNextSync();