merge method
Implementation
void merge(KdbxMeta other) {
// FIXME make sure this is finished
if (other.databaseNameChanged.isAfter(databaseNameChanged)) {
databaseName.set(other.databaseName.get());
databaseNameChanged.set(other.databaseNameChanged.get());
}
if (other.databaseDescriptionChanged.isAfter(databaseDescriptionChanged)) {
databaseDescription.set(other.databaseDescription.get());
databaseDescriptionChanged.set(other.databaseDescriptionChanged.get());
}
if (other.defaultUserNameChanged.isAfter(defaultUserNameChanged)) {
defaultUserName.set(other.defaultUserName.get());
defaultUserNameChanged.set(other.defaultUserNameChanged.get());
}
if (other.masterKeyChanged.isAfter(masterKeyChanged)) {
// throw UnimplementedError(
// 'Other database changed master key. not supported.');
_logger.shout('MasterKey was changed? We will not merge this (yet).');
}
if (other.recycleBinChanged.isAfter(recycleBinChanged)) {
recycleBinEnabled.set(other.recycleBinEnabled.get());
recycleBinUUID.set(other.recycleBinUUID.get());
recycleBinChanged.set(other.recycleBinChanged.get());
}
final otherIsNewer = other.settingsChanged.isAfter(settingsChanged);
// merge custom data
customData.merge(other.customData, otherIsNewer);
// merge custom icons
for (final otherCustomIcon in other._customIcons.values) {
_customIcons[otherCustomIcon.uuid] ??= otherCustomIcon;
}
settingsChanged.set(other.settingsChanged.get());
}