merge method

void merge(
  1. KdbxMeta other
)

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());
}