diff options
author | Camila Ayres <hello@camila.codes> | 2019-06-12 12:33:25 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-06-12 12:33:25 +0300 |
commit | 0b420c5fe64c5e69d74ee65daa3bf83af746ff14 (patch) | |
tree | 332b52964ad5050813e86d9bac7eb138102ecea0 | |
parent | 795c29d5bdb5d9435cc889354a7f0fc19d22833d (diff) | |
parent | bb7d330516e5ae743af862ea22ab01b651ef8dee (diff) |
Merge pull request #1301 from nextcloud/error-423-change-warning-colorv2.5.3-rc2stable-2.5.3-rc2
Add error category for http file lock error status 423.
-rw-r--r-- | src/gui/activitylistmodel.cpp | 3 | ||||
-rw-r--r-- | src/gui/activitywidget.cpp | 5 | ||||
-rw-r--r-- | src/gui/folder.cpp | 4 | ||||
-rw-r--r-- | src/gui/folder.h | 3 | ||||
-rw-r--r-- | src/libsync/owncloudpropagator.cpp | 1 | ||||
-rw-r--r-- | src/libsync/owncloudpropagator_p.h | 2 | ||||
-rw-r--r-- | src/libsync/progressdispatcher.cpp | 3 | ||||
-rw-r--r-- | src/libsync/propagatedownload.cpp | 6 | ||||
-rw-r--r-- | src/libsync/syncfileitem.h | 1 | ||||
-rw-r--r-- | src/libsync/syncfilestatustracker.cpp | 3 | ||||
-rw-r--r-- | src/libsync/syncresult.cpp | 8 | ||||
-rw-r--r-- | src/libsync/syncresult.h | 6 |
12 files changed, 40 insertions, 5 deletions
diff --git a/src/gui/activitylistmodel.cpp b/src/gui/activitylistmodel.cpp index 5b084784b..ae3a7c6b3 100644 --- a/src/gui/activitylistmodel.cpp +++ b/src/gui/activitylistmodel.cpp @@ -105,7 +105,8 @@ QVariant ActivityListModel::data(const QModelIndex &index, int role) const } else if(a._status == SyncFileItem::SoftError || a._status == SyncFileItem::FileIgnored || a._status == SyncFileItem::Conflict - || a._status == SyncFileItem::Restoration){ + || a._status == SyncFileItem::Restoration + || a._status == SyncFileItem::FileLocked){ return QIcon(QLatin1String(":/client/resources/state-warning.svg")); } return QIcon(QLatin1String(":/client/resources/state-sync.svg")); diff --git a/src/gui/activitywidget.cpp b/src/gui/activitywidget.cpp index 71a86dd28..c293a0384 100644 --- a/src/gui/activitywidget.cpp +++ b/src/gui/activitywidget.cpp @@ -121,6 +121,11 @@ void ActivityWidget::slotProgressInfo(const QString &folder, const ProgressInfo continue; } + if(activity._status == SyncFileItem::FileLocked && !QFileInfo(f->path() + activity._file).exists()){ + _model->removeActivityFromActivityList(activity); + continue; + } + if(activity._status == SyncFileItem::FileIgnored && !QFileInfo(f->path() + activity._file).exists()){ _model->removeActivityFromActivityList(activity); diff --git a/src/gui/folder.cpp b/src/gui/folder.cpp index 97625c5c6..f5aedacf0 100644 --- a/src/gui/folder.cpp +++ b/src/gui/folder.cpp @@ -351,6 +351,10 @@ void Folder::showSyncResultPopup() createGuiLog(_syncResult.firstItemError()->_file, LogStatusError, errorCount); } + if (int lockedCount = _syncResult.numLockedItems()) { + createGuiLog(_syncResult.firstItemLocked()->_file, LogStatusFileLocked, lockedCount); + } + qCInfo(lcFolder) << "Folder sync result: " << int(_syncResult.status()); } diff --git a/src/gui/folder.h b/src/gui/folder.h index 05bd62a4e..48a2e52f7 100644 --- a/src/gui/folder.h +++ b/src/gui/folder.h @@ -344,7 +344,8 @@ private: LogStatusNew, LogStatusError, LogStatusConflict, - LogStatusUpdated + LogStatusUpdated, + LogStatusFileLocked }; void createGuiLog(const QString &filename, LogStatus status, int count, diff --git a/src/libsync/owncloudpropagator.cpp b/src/libsync/owncloudpropagator.cpp index bf358153e..ac03a1b97 100644 --- a/src/libsync/owncloudpropagator.cpp +++ b/src/libsync/owncloudpropagator.cpp @@ -269,6 +269,7 @@ void PropagateItemJob::done(SyncFileItem::Status statusArg, const QString &error case SyncFileItem::FileIgnored: case SyncFileItem::NoStatus: case SyncFileItem::BlacklistedError: + case SyncFileItem::FileLocked: // nothing break; } diff --git a/src/libsync/owncloudpropagator_p.h b/src/libsync/owncloudpropagator_p.h index cb266a80d..90841e537 100644 --- a/src/libsync/owncloudpropagator_p.h +++ b/src/libsync/owncloudpropagator_p.h @@ -93,7 +93,7 @@ inline SyncFileItem::Status classifyError(QNetworkReply::NetworkError nerror, if (anotherSyncNeeded) { *anotherSyncNeeded = true; } - return SyncFileItem::SoftError; + return SyncFileItem::FileLocked; } return SyncFileItem::NormalError; diff --git a/src/libsync/progressdispatcher.cpp b/src/libsync/progressdispatcher.cpp index e17279a53..179d28319 100644 --- a/src/libsync/progressdispatcher.cpp +++ b/src/libsync/progressdispatcher.cpp @@ -91,7 +91,8 @@ bool Progress::isWarningKind(SyncFileItem::Status kind) return kind == SyncFileItem::SoftError || kind == SyncFileItem::NormalError || kind == SyncFileItem::FatalError || kind == SyncFileItem::FileIgnored || kind == SyncFileItem::Conflict || kind == SyncFileItem::Restoration - || kind == SyncFileItem::DetailError || kind == SyncFileItem::BlacklistedError; + || kind == SyncFileItem::DetailError || kind == SyncFileItem::BlacklistedError + || kind == SyncFileItem::FileLocked; } bool Progress::isIgnoredKind(SyncFileItem::Status kind) diff --git a/src/libsync/propagatedownload.cpp b/src/libsync/propagatedownload.cpp index 07c7c5f18..da2d88b82 100644 --- a/src/libsync/propagatedownload.cpp +++ b/src/libsync/propagatedownload.cpp @@ -571,6 +571,12 @@ void PropagateDownloadFile::slotGetFinished() qCWarning(lcPropagateDownload) << "server replied 404, assuming file was deleted"; } + // Getting a 423 means that the file is locked + const bool fileLocked = _item->_httpErrorCode == 423; + if (fileLocked) { + qCWarning(lcPropagateDownload) << "server replied 423, file is Locked"; + } + // Don't keep the temporary file if it is empty or we // used a bad range header or the file's not on the server anymore. if (_tmpFile.size() == 0 || badRangeHeader || fileNotFound) { diff --git a/src/libsync/syncfileitem.h b/src/libsync/syncfileitem.h index 461627ba3..e054ab83a 100644 --- a/src/libsync/syncfileitem.h +++ b/src/libsync/syncfileitem.h @@ -59,6 +59,7 @@ public: Conflict, FileIgnored, ///< The file is in the ignored list (or blacklisted with no retries left) + FileLocked, ///< The file is locked Restoration, ///< The file was restored because what should have been done was not allowed /** For errors that should only appear in the error view. diff --git a/src/libsync/syncfilestatustracker.cpp b/src/libsync/syncfilestatustracker.cpp index 6dc2514ff..c492b34d5 100644 --- a/src/libsync/syncfilestatustracker.cpp +++ b/src/libsync/syncfilestatustracker.cpp @@ -105,7 +105,8 @@ static inline bool showWarningInSocketApi(const SyncFileItem &item) return item._instruction == CSYNC_INSTRUCTION_IGNORE || status == SyncFileItem::FileIgnored || status == SyncFileItem::Conflict - || status == SyncFileItem::Restoration; + || status == SyncFileItem::Restoration + || status == SyncFileItem::FileLocked; } SyncFileStatusTracker::SyncFileStatusTracker(SyncEngine *syncEngine) diff --git a/src/libsync/syncresult.cpp b/src/libsync/syncresult.cpp index 8550b4628..a3481c74f 100644 --- a/src/libsync/syncresult.cpp +++ b/src/libsync/syncresult.cpp @@ -28,6 +28,7 @@ SyncResult::SyncResult() , _numNewConflictItems(0) , _numOldConflictItems(0) , _numErrorItems(0) + , _numLockedItems(0) { } @@ -139,6 +140,13 @@ void SyncResult::processCompletedItem(const SyncFileItemPtr &item) _folderStructureWasChanged = true; } + if(item->_status == SyncFileItem::FileLocked){ + _numLockedItems++; + if (!_firstItemLocked) { + _firstItemLocked = item; + } + } + // Process the item to the gui if (item->_status == SyncFileItem::FatalError || item->_status == SyncFileItem::NormalError) { //: this displays an error string (%2) for a file %1 diff --git a/src/libsync/syncresult.h b/src/libsync/syncresult.h index 6c484ee4d..1a0c680ca 100644 --- a/src/libsync/syncresult.h +++ b/src/libsync/syncresult.h @@ -72,12 +72,16 @@ public: int numErrorItems() const { return _numErrorItems; } bool hasUnresolvedConflicts() const { return _numNewConflictItems + _numOldConflictItems > 0; } + int numLockedItems() const { return _numLockedItems; } + bool hasLockedFiles() const { return _numLockedItems > 0; } + const SyncFileItemPtr &firstItemNew() const { return _firstItemNew; } const SyncFileItemPtr &firstItemDeleted() const { return _firstItemDeleted; } const SyncFileItemPtr &firstItemUpdated() const { return _firstItemUpdated; } const SyncFileItemPtr &firstItemRenamed() const { return _firstItemRenamed; } const SyncFileItemPtr &firstNewConflictItem() const { return _firstNewConflictItem; } const SyncFileItemPtr &firstItemError() const { return _firstItemError; } + const SyncFileItemPtr &firstItemLocked() const { return _firstItemLocked; } void processCompletedItem(const SyncFileItemPtr &item); @@ -101,6 +105,7 @@ private: int _numNewConflictItems; int _numOldConflictItems; int _numErrorItems; + int _numLockedItems; SyncFileItemPtr _firstItemNew; SyncFileItemPtr _firstItemDeleted; @@ -108,6 +113,7 @@ private: SyncFileItemPtr _firstItemRenamed; SyncFileItemPtr _firstNewConflictItem; SyncFileItemPtr _firstItemError; + SyncFileItemPtr _firstItemLocked; }; } |