diff --git a/src/libsync/discovery.cpp b/src/libsync/discovery.cpp index 2e4fa09da54ed..ce8ef8d306e0f 100644 --- a/src/libsync/discovery.cpp +++ b/src/libsync/discovery.cpp @@ -245,12 +245,16 @@ void ProcessDirectoryJob::process() checkAndUpdateSelectiveSyncListsForE2eeFolders(path._server + "/"); } - if (_queryServer == InBlackList || _discoveryData->isInSelectiveSyncBlackList(path._original) || isEncryptedFolderButE2eIsNotSetup) { - processBlacklisted(path, e.localEntry, e.dbEntry); + const auto isBlacklisted = _queryServer == InBlackList || _discoveryData->isInSelectiveSyncBlackList(path._original) || isEncryptedFolderButE2eIsNotSetup; + + const auto willBeExcluded = handleExcluded(path._target, e, entries, isHidden, isBlacklisted); + + if (willBeExcluded) { continue; } - if (handleExcluded(path._target, e, entries, isHidden)) { + if (isBlacklisted) { + processBlacklisted(path, e.localEntry, e.dbEntry); continue; } @@ -266,7 +270,7 @@ void ProcessDirectoryJob::process() QTimer::singleShot(0, _discoveryData, &DiscoveryPhase::scheduleMoreJobs); } -bool ProcessDirectoryJob::handleExcluded(const QString &path, const Entries &entries, const std::map &allEntries, bool isHidden) +bool ProcessDirectoryJob::handleExcluded(const QString &path, const Entries &entries, const std::map &allEntries, const bool isHidden, const bool isBlacklisted) { const auto isDirectory = entries.localEntry.isDirectory || entries.serverEntry.isDirectory; @@ -497,7 +501,13 @@ bool ProcessDirectoryJob::handleExcluded(const QString &path, const Entries &ent } _childIgnored = true; - emit _discoveryData->itemDiscovered(item); + + if (isBlacklisted) { + emit _discoveryData->silentlyExcluded(path); + } else { + emit _discoveryData->itemDiscovered(item); + } + return true; } diff --git a/src/libsync/discovery.h b/src/libsync/discovery.h index a18fc601458a1..ae886cae48938 100644 --- a/src/libsync/discovery.h +++ b/src/libsync/discovery.h @@ -148,7 +148,7 @@ class ProcessDirectoryJob : public QObject // return true if the file is excluded. // path is the full relative path of the file. localName is the base name of the local entry. - bool handleExcluded(const QString &path, const Entries &entries, const std::map &allEntries, bool isHidden); + bool handleExcluded(const QString &path, const Entries &entries, const std::map &allEntries, bool isHidden, bool isBlacklisted); bool canRemoveCaseClashConflictedCopy(const QString &path, const std::map &allEntries);