groupDomainsByFamily function
- 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;
}