Skip to content

Commit

Permalink
Merge pull request #1301 from nextcloud/error-423-change-warning-color
Browse files Browse the repository at this point in the history
Add error category for http file lock error status 423.
  • Loading branch information
Camila Ayres authored Jun 12, 2019
2 parents 795c29d + bb7d330 commit 0b420c5
Show file tree
Hide file tree
Showing 12 changed files with 40 additions and 5 deletions.
3 changes: 2 additions & 1 deletion src/gui/activitylistmodel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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"));
Expand Down
5 changes: 5 additions & 0 deletions src/gui/activitywidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
4 changes: 4 additions & 0 deletions src/gui/folder.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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());
}

Expand Down
3 changes: 2 additions & 1 deletion src/gui/folder.h
Original file line number Diff line number Diff line change
Expand Up @@ -344,7 +344,8 @@ private slots:
LogStatusNew,
LogStatusError,
LogStatusConflict,
LogStatusUpdated
LogStatusUpdated,
LogStatusFileLocked
};

void createGuiLog(const QString &filename, LogStatus status, int count,
Expand Down
1 change: 1 addition & 0 deletions src/libsync/owncloudpropagator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand Down
2 changes: 1 addition & 1 deletion src/libsync/owncloudpropagator_p.h
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ inline SyncFileItem::Status classifyError(QNetworkReply::NetworkError nerror,
if (anotherSyncNeeded) {
*anotherSyncNeeded = true;
}
return SyncFileItem::SoftError;
return SyncFileItem::FileLocked;
}

return SyncFileItem::NormalError;
Expand Down
3 changes: 2 additions & 1 deletion src/libsync/progressdispatcher.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
6 changes: 6 additions & 0 deletions src/libsync/propagatedownload.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
1 change: 1 addition & 0 deletions src/libsync/syncfileitem.h
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ class SyncFileItem
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.
Expand Down
3 changes: 2 additions & 1 deletion src/libsync/syncfilestatustracker.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
8 changes: 8 additions & 0 deletions src/libsync/syncresult.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ SyncResult::SyncResult()
, _numNewConflictItems(0)
, _numOldConflictItems(0)
, _numErrorItems(0)
, _numLockedItems(0)

{
}
Expand Down Expand Up @@ -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
Expand Down
6 changes: 6 additions & 0 deletions src/libsync/syncresult.h
Original file line number Diff line number Diff line change
Expand Up @@ -72,12 +72,16 @@ class OWNCLOUDSYNC_EXPORT SyncResult
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);

Expand All @@ -101,13 +105,15 @@ class OWNCLOUDSYNC_EXPORT SyncResult
int _numNewConflictItems;
int _numOldConflictItems;
int _numErrorItems;
int _numLockedItems;

SyncFileItemPtr _firstItemNew;
SyncFileItemPtr _firstItemDeleted;
SyncFileItemPtr _firstItemUpdated;
SyncFileItemPtr _firstItemRenamed;
SyncFileItemPtr _firstNewConflictItem;
SyncFileItemPtr _firstItemError;
SyncFileItemPtr _firstItemLocked;
};
}

Expand Down

0 comments on commit 0b420c5

Please sign in to comment.