Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/desktop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/common/result.h2
-rw-r--r--src/libsync/discovery.cpp12
2 files changed, 8 insertions, 6 deletions
diff --git a/src/common/result.h b/src/common/result.h
index 579914f5c..25129e875 100644
--- a/src/common/result.h
+++ b/src/common/result.h
@@ -126,6 +126,8 @@ public:
ASSERT(_isError);
return std::move(_error);
}
+
+ bool isValid() const { return !_isError; }
};
namespace detail {
diff --git a/src/libsync/discovery.cpp b/src/libsync/discovery.cpp
index d4dc0689f..777b2390e 100644
--- a/src/libsync/discovery.cpp
+++ b/src/libsync/discovery.cpp
@@ -916,24 +916,24 @@ void ProcessDirectoryJob::processFileAnalyzeLocalInfo(
const bool isFilePlaceHolder = !localEntry.isDirectory && _discoveryData->_syncOptions._vfs->isDehydratedPlaceholder(_discoveryData->_localDir + path._local);
// either correct availability, or a result with error if the folder is new or otherwise has no availability set yet
- const auto folderAvailability = localEntry.isDirectory ? _discoveryData->_syncOptions._vfs->availability(path._local) : Vfs::AvailabilityError::NoSuchItem;
+ const auto folderAvailability = localEntry.isDirectory ? _discoveryData->_syncOptions._vfs->availability(path._local) : Vfs::AvailabilityResult(Vfs::AvailabilityError::NoSuchItem);
- const auto folderPinState = localEntry.isDirectory ? _discoveryData->_syncOptions._vfs->pinState(path._local) : PinState::Unspecified;
+ const auto folderPinState = localEntry.isDirectory ? _discoveryData->_syncOptions._vfs->pinState(path._local) : Optional<PinStateEnums::PinState>(PinState::Unspecified);
- if (!isFilePlaceHolder && !folderAvailability && !folderPinState) {
+ if (!isFilePlaceHolder && !folderAvailability.isValid() && !folderPinState.isValid()) {
// not a file placeholder and not a synced folder placeholder (new local folder)
return;
}
- const auto isFolderPinStateOnlineOnly = (folderPinState && *folderPinState == PinState::OnlineOnly);
+ const auto isFolderPinStateOnlineOnly = (folderPinState.isValid() && *folderPinState == PinState::OnlineOnly);
- const auto isFolderAvailabilityOnlineOnly = (folderAvailability && *folderAvailability == VfsItemAvailability::OnlineOnly);
+ const auto isFolderAvailabilityOnlineOnly = (folderAvailability.isValid() && *folderAvailability == VfsItemAvailability::OnlineOnly);
// a folder is considered online-only if: no files are hydrated, or, if it's an empty folder
const auto isOnlineOnlyFolder = isFolderAvailabilityOnlineOnly || !folderAvailability && isFolderPinStateOnlineOnly;
if (!isFilePlaceHolder && !isOnlineOnlyFolder) {
- if (localEntry.isDirectory && folderAvailability && !isOnlineOnlyFolder) {
+ if (localEntry.isDirectory && folderAvailability.isValid() && !isOnlineOnlyFolder) {
// a VFS folder but is not online0only (has some files hydrated)
qCInfo(lcDisco) << "Virtual directory without db entry for" << path._local << "but it contains hydrated file(s), so let's keep it and reupload.";
emit _discoveryData->addErrorToGui(SyncFileItem::SoftError, tr("Conflict when uploading some files to a folder. Those, conflicted, are going to get cleared!"), path._local);