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:
authorHannah von Reth <hannah.vonreth@owncloud.com>2021-06-28 13:32:57 +0300
committerMatthieu Gallien (Rebase PR Action) <matthieu_gallien@yahoo.fr>2021-07-06 17:03:53 +0300
commite7e218d8e69efdb1b40b9e290d235249e55bc750 (patch)
treeb02539db9b6255e57dd34b6a0ced2cca39ce3a8b /src/common
parente852c516750067a6b73175ef7bb4335de7e50e99 (diff)
Improve the error message returned by updateMetadata
Also properly handle the case the the file can't be converted to a placeholder as it is locked
Diffstat (limited to 'src/common')
-rw-r--r--src/common/syncjournaldb.cpp10
-rw-r--r--src/common/syncjournaldb.h2
-rw-r--r--src/common/vfs.h11
3 files changed, 15 insertions, 8 deletions
diff --git a/src/common/syncjournaldb.cpp b/src/common/syncjournaldb.cpp
index 579289df5..d2f880112 100644
--- a/src/common/syncjournaldb.cpp
+++ b/src/common/syncjournaldb.cpp
@@ -898,7 +898,7 @@ qint64 SyncJournalDb::getPHash(const QByteArray &file)
return h;
}
-bool SyncJournalDb::setFileRecord(const SyncJournalFileRecord &_record)
+Result<void, QString> SyncJournalDb::setFileRecord(const SyncJournalFileRecord &_record)
{
SyncJournalFileRecord record = _record;
QMutexLocker locker(&_mutex);
@@ -940,7 +940,7 @@ bool SyncJournalDb::setFileRecord(const SyncJournalFileRecord &_record)
"INSERT OR REPLACE INTO metadata "
"(phash, pathlen, path, inode, uid, gid, mode, modtime, type, md5, fileid, remotePerm, filesize, ignoredChildrenRemote, contentChecksum, contentChecksumTypeId, e2eMangledName, isE2eEncrypted) "
"VALUES (?1 , ?2, ?3 , ?4 , ?5 , ?6 , ?7, ?8 , ?9 , ?10, ?11, ?12, ?13, ?14, ?15, ?16, ?17, ?18);"), _db)) {
- return false;
+ return _setFileRecordQuery.error();
}
_setFileRecordQuery.bindValue(1, phash);
@@ -963,16 +963,16 @@ bool SyncJournalDb::setFileRecord(const SyncJournalFileRecord &_record)
_setFileRecordQuery.bindValue(18, record._isE2eEncrypted);
if (!_setFileRecordQuery.exec()) {
- return false;
+ return _setFileRecordQuery.error();
}
// Can't be true anymore.
_metadataTableIsEmpty = false;
- return true;
+ return {};
} else {
qCWarning(lcDb) << "Failed to connect database.";
- return false; // checkConnect failed.
+ return tr("Failed to connect database."); // checkConnect failed.
}
}
diff --git a/src/common/syncjournaldb.h b/src/common/syncjournaldb.h
index cbfa8d387..aa949752a 100644
--- a/src/common/syncjournaldb.h
+++ b/src/common/syncjournaldb.h
@@ -65,7 +65,7 @@ public:
bool getFileRecordsByFileId(const QByteArray &fileId, const std::function<void(const SyncJournalFileRecord &)> &rowCallback);
bool getFilesBelowPath(const QByteArray &path, const std::function<void(const SyncJournalFileRecord&)> &rowCallback);
bool listFilesInPath(const QByteArray &path, const std::function<void(const SyncJournalFileRecord&)> &rowCallback);
- bool setFileRecord(const SyncJournalFileRecord &record);
+ Result<void, QString> setFileRecord(const SyncJournalFileRecord &record);
void keyValueStoreSet(const QString &key, QVariant value);
qint64 keyValueStoreGetInt(const QString &key, qint64 defaultValue);
diff --git a/src/common/vfs.h b/src/common/vfs.h
index ba2c5c7af..1435f2633 100644
--- a/src/common/vfs.h
+++ b/src/common/vfs.h
@@ -104,6 +104,13 @@ public:
XAttr,
};
Q_ENUM(Mode)
+ enum class ConvertToPlaceholderResult {
+ Error,
+ Ok,
+ Locked
+ };
+ Q_ENUM(ConvertToPlaceholderResult)
+
static QString modeToString(Mode mode);
static Optional<Mode> modeFromString(const QString &str);
@@ -197,7 +204,7 @@ public:
* new placeholder shall supersede, for rename-replace actions with new downloads,
* for example.
*/
- virtual Q_REQUIRED_RESULT Result<void, QString> convertToPlaceholder(
+ virtual Q_REQUIRED_RESULT Result<Vfs::ConvertToPlaceholderResult, QString> convertToPlaceholder(
const QString &filename,
const SyncFileItem &item,
const QString &replacesFile = QString()) = 0;
@@ -303,7 +310,7 @@ public:
Result<void, QString> updateMetadata(const QString &, time_t, qint64, const QByteArray &) override { return {}; }
Result<void, QString> createPlaceholder(const SyncFileItem &) override { return {}; }
Result<void, QString> dehydratePlaceholder(const SyncFileItem &) override { return {}; }
- Result<void, QString> convertToPlaceholder(const QString &, const SyncFileItem &, const QString &) override { return {}; }
+ Result<ConvertToPlaceholderResult, QString> convertToPlaceholder(const QString &, const SyncFileItem &, const QString &) override { return ConvertToPlaceholderResult::Ok; }
bool needsMetadataUpdate(const SyncFileItem &) override { return false; }
bool isDehydratedPlaceholder(const QString &) override { return false; }