groupDomainsByFamily function

List<DomainGroupItem> groupDomainsByFamily(
  1. List<DomainEntity> domains
)

Groups a flat list of DomainEntity by domain_family. Domains with a null family stay as SingleDomain; multiple domains sharing a family collapse into one FamilyDomain whose variants are sorted by variantOrder. The first family encountered wins the slot — duplicates are skipped.

Implementation

List<DomainGroupItem> groupDomainsByFamily(List<DomainEntity> domains) {
  final items = <DomainGroupItem>[];
  final seenFamilies = <String>{};
  for (final d in domains) {
    final family = d.domainFamily;
    if (family == null) {
      items.add(SingleDomain(d));
    } else if (seenFamilies.add(family)) {
      final variants = domains.where((e) => e.domainFamily == family).toList()
        ..sort((a, b) {
          final ai = variantOrder.indexOf(a.variant ?? '');
          final bi = variantOrder.indexOf(b.variant ?? '');
          return (ai == -1 ? 99 : ai).compareTo(bi == -1 ? 99 : bi);
        });
      items.add(FamilyDomain((family: family, variants: variants)));
    }
  }
  return items;
}