ensure proper VFS metadata when restoring folders

when remote move is forbidden, desktop client will move back the folder
to its original name

in such cases, we were forgetting to set VFS metadata in their proper
state (i.e. placeholder in sync)

so ensure that when a remote move fails, we still touch VFS metadata
when appropriate and handle errors

Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
This commit is contained in:
Matthieu Gallien 2024-04-30 13:31:54 +02:00
parent a003a0789f
commit da920f6d4e
No known key found for this signature in database
GPG Key ID: 7D0F74F05C22F553

View File

@ -217,7 +217,19 @@ void PropagateRemoteMove::slotMoveJobFinished()
qCWarning(lcPropagateRemoteMove)
<< "Could not MOVE file" << filePathOriginal << " to" << filePath
<< " with error:" << _job->errorString() << " and successfully restored it.";
auto restoredItem = *_item;
restoredItem._renameTarget = _item->_originalFile;
const auto result = propagator()->updateMetadata(restoredItem);
if (!result) {
done(SyncFileItem::FatalError, tr("Error updating metadata: %1").arg(result.error()), ErrorCategory::GenericError);
return;
} else if (*result == Vfs::ConvertToPlaceholderResult::Locked) {
done(SyncFileItem::SoftError, tr("The file %1 is currently in use").arg(restoredItem._file), ErrorCategory::GenericError);
return;
}
}
done(status, _job->errorString(), ErrorCategory::GenericError);
return;
}