mirror of
https://github.com/keepassxreboot/keepassxc.git
synced 2025-06-19 20:24:38 -04:00
Introduce synchronize merge method
* Create history-based merging that keeps older data in history instead of discarding or deleting it * Extract merge logic into the Merger class * Allows special merge behavior * Improve handling of deletion and changes on groups * Enable basic change tracking while merging * Prevent unintended timestamp changes while merging * Handle differences in timestamp precision * Introduce comparison operators to allow for more sophisticated comparisons (ignore special properties, ...) * Introduce Clock class to handle datetime across the app Merge Strategies: * Default (use inherited/fallback method) * Duplicate (duplicate conflicting nodes, apply all deletions) * KeepLocal (use local values, but apply all deletions) * KeepRemote (use remote values, but apply all deletions) * KeepNewer (merge history only) * Synchronize (merge history, newest value stays on top, apply all deletions)
This commit is contained in:
parent
b40e5686dc
commit
c1e9f45df9
43 changed files with 2777 additions and 585 deletions
|
@ -114,7 +114,7 @@ QString BrowserService::getDatabaseRootUuid()
|
|||
return QString();
|
||||
}
|
||||
|
||||
return QString::fromLatin1(rootGroup->uuid().toRfc4122().toHex());
|
||||
return rootGroup->uuidToHex();
|
||||
}
|
||||
|
||||
QString BrowserService::getDatabaseRecycleBinUuid()
|
||||
|
@ -128,7 +128,7 @@ QString BrowserService::getDatabaseRecycleBinUuid()
|
|||
if (!recycleBin) {
|
||||
return QString();
|
||||
}
|
||||
return QString::fromLatin1(recycleBin->uuid().toRfc4122().toHex());
|
||||
return recycleBin->uuidToHex();
|
||||
}
|
||||
|
||||
Entry* BrowserService::getConfigEntry(bool create)
|
||||
|
@ -636,7 +636,7 @@ QJsonObject BrowserService::prepareEntry(const Entry* entry)
|
|||
res["login"] = entry->resolveMultiplePlaceholders(entry->username());
|
||||
res["password"] = entry->resolveMultiplePlaceholders(entry->password());
|
||||
res["name"] = entry->resolveMultiplePlaceholders(entry->title());
|
||||
res["uuid"] = entry->resolveMultiplePlaceholders(QString::fromLatin1(entry->uuid().toRfc4122().toHex()));
|
||||
res["uuid"] = entry->resolveMultiplePlaceholders(entry->uuidToHex());
|
||||
|
||||
if (entry->hasTotp()) {
|
||||
res["totp"] = entry->totp();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue