detectChanges function

List<SettingsChange> detectChanges(
  1. SettingsJson oldSettings,
  2. SettingsJson newSettings
)

Detect changes between old and new settings.

Implementation

List<SettingsChange> detectChanges(
  SettingsJson oldSettings,
  SettingsJson newSettings,
) {
  final changes = <SettingsChange>[];

  if (oldSettings.model != newSettings.model) {
    changes.add(
      SettingsChange(
        field: 'model',
        oldValue: oldSettings.model,
        newValue: newSettings.model,
      ),
    );
  }

  // Permission changes
  if (!_listEquals(
    oldSettings.permissions.allow,
    newSettings.permissions.allow,
  )) {
    changes.add(
      SettingsChange(
        field: 'permissions.allow',
        oldValue: oldSettings.permissions.allow,
        newValue: newSettings.permissions.allow,
      ),
    );
  }
  if (!_listEquals(
    oldSettings.permissions.deny,
    newSettings.permissions.deny,
  )) {
    changes.add(
      SettingsChange(
        field: 'permissions.deny',
        oldValue: oldSettings.permissions.deny,
        newValue: newSettings.permissions.deny,
      ),
    );
  }

  if (oldSettings.sandbox.enabled != newSettings.sandbox.enabled) {
    changes.add(
      SettingsChange(
        field: 'sandbox.enabled',
        oldValue: oldSettings.sandbox.enabled,
        newValue: newSettings.sandbox.enabled,
      ),
    );
  }

  if (oldSettings.theme != newSettings.theme) {
    changes.add(
      SettingsChange(
        field: 'theme',
        oldValue: oldSettings.theme,
        newValue: newSettings.theme,
      ),
    );
  }

  return changes;
}