item->_lockEditorApp = serverEntry.lockEditorApp;
item->_lockTime = serverEntry.lockTime;
item->_lockTimeout = serverEntry.lockTimeout;
+ item->_lockToken = serverEntry.lockToken;
qCDebug(lcDisco()) << "item lock for:" << item->_file
<< item->_locked
<< item->_lockOwnerType
<< item->_lockEditorApp
<< item->_lockTime
- << item->_lockTimeout;
+ << item->_lockTimeout
+ << item->_lockToken;
// Check for missing server data
{
<< "http://nextcloud.org/ns:lock-owner-type"
<< "http://nextcloud.org/ns:lock-owner-editor"
<< "http://nextcloud.org/ns:lock-time"
- << "http://nextcloud.org/ns:lock-timeout";
+ << "http://nextcloud.org/ns:lock-timeout"
+ << "http://nextcloud.org/ns:lock-token";
}
props << "http://nextcloud.org/ns:is-mount-root";
result.lockTimeout = 0;
}
}
-
+ if (property == "lock-token") {
+ result.lockToken = value;
+ }
}
if (result.isDirectory && map.contains("size")) {
QString lockEditorApp;
qint64 lockTime = 0;
qint64 lockTimeout = 0;
+ QString lockToken;
};
struct LocalInfo
record._lockstate._lockEditorApp = _editorName;
record._lockstate._lockTime = _lockTime;
record._lockstate._lockTimeout = _lockTimeout;
+ record._lockstate._lockToken = _lockToken;
if (!_etag.isEmpty()) {
record._etag = _etag;
}
_userId.clear();
_lockTime = 0;
_lockTimeout = 0;
+ _lockToken.clear();
}
SyncJournalFileRecord LockFileJob::handleReply()
_editorName = reader.readElementText();
} else if (name == QStringLiteral("getetag")) {
_etag = reader.readElementText().toUtf8();
+ } else if (name == QStringLiteral("lock-token")) {
+ _lockToken = reader.readElementText();
}
}
QByteArray _etag;
qint64 _lockTime = 0;
qint64 _lockTimeout = 0;
+ QString _lockToken;
QString _remoteSyncPathWithTrailingSlash;
QString _localSyncPath;
};
lockInfo._lockOwnerType = static_cast<qint64>(item->_lockOwnerType);
lockInfo._lockOwnerDisplayName = item->_lockOwnerDisplayName;
lockInfo._lockEditorApp = item->_lockOwnerDisplayName;
+ lockInfo._lockToken = item->_lockToken;
if (!_journal->updateLocalMetadata(item->_file, item->_modtime, item->_size, item->_inode, lockInfo)) {
qCWarning(lcEngine) << "Could not update local metadata for file" << item->_file;
rec._lockstate._lockEditorApp = _lockEditorApp;
rec._lockstate._lockTime = _lockTime;
rec._lockstate._lockTimeout = _lockTimeout;
+ rec._lockstate._lockToken = _lockToken;
// Update the inode if possible
rec._inode = _inode;
item->_lockEditorApp = rec._lockstate._lockEditorApp;
item->_lockTime = rec._lockstate._lockTime;
item->_lockTimeout = rec._lockstate._lockTimeout;
+ item->_lockToken = rec._lockstate._lockToken;
item->_sharedByMe = rec._sharedByMe;
item->_isShared = rec._isShared;
item->_lastShareStateFetchedTimestamp = rec._lastShareStateFetchedTimestamp;
item->_lockTimeout = ok ? intConvertedValue : 0;
}
+ item->_lockToken = properties.value(QStringLiteral("lock-token"));
+
const auto date = QDateTime::fromString(properties.value(QStringLiteral("getlastmodified")), Qt::RFC2822Date);
Q_ASSERT(date.isValid());
if (date.toSecsSinceEpoch() > 0) {
_lockEditorApp = dbRecord._lockstate._lockEditorApp;
_lockTime = dbRecord._lockstate._lockTime;
_lockTimeout = dbRecord._lockstate._lockTimeout;
+ _lockToken = dbRecord._lockstate._lockToken;
}
}
QString _lockEditorApp;
qint64 _lockTime = 0;
qint64 _lockTimeout = 0;
+ QString _lockToken;
bool _isShared = false;
time_t _lastShareStateFetchedTimestamp = 0;