sync method

void sync({
  1. required List<CatalogRow> rows,
  2. required CatalogMeta? meta,
})

Implementation

void sync({
  required List<CatalogRow> rows,
  required CatalogMeta? meta,
}) {
  var changed = false;
  if (rows.isEmpty) {
    if (_selectedKey != null) {
      _selectedKey = null;
      changed = true;
    }
    if (_selectionExplicit) {
      _selectionExplicit = false;
      changed = true;
    }
    final fallbackLocale = defaultEditorLocale(meta);
    if (_selectedLocale != fallbackLocale) {
      _selectedLocale = fallbackLocale;
      changed = true;
    }
    if (changed) {
      notifyListeners();
    }
    return;
  }

  final currentKey = _selectedKey;
  if (currentKey == null || !rows.any((row) => row.keyPath == currentKey)) {
    _selectedKey = rows.first.keyPath;
    _selectionExplicit = false;
    changed = true;
  }

  final locales = meta?.locales ?? const <String>[];
  if (_selectedLocale == null || !locales.contains(_selectedLocale)) {
    _selectedLocale = defaultEditorLocale(meta);
    changed = true;
  }

  if (changed) {
    notifyListeners();
  }
}