resolveEnsembleThemeName function

String? resolveEnsembleThemeName(
  1. String? raw, {
  2. List<String> registeredNames = const [],
})

Resolves a device/step theme value to an Ensemble Themes entry name.

Accepts aliases (lightLight, darkDark) and case-insensitive matches against registered theme names when registeredNames is provided.

Implementation

String? resolveEnsembleThemeName(
  String? raw, {
  List<String> registeredNames = const [],
}) {
  final value = raw?.trim();
  if (value == null || value.isEmpty) return null;

  final aliased = switch (value.toLowerCase()) {
    'light' => 'Light',
    'dark' => 'Dark',
    _ => value,
  };

  if (registeredNames.isEmpty) return aliased;

  for (final name in registeredNames) {
    if (name == aliased) return name;
  }
  for (final name in registeredNames) {
    if (name.toLowerCase() == aliased.toLowerCase()) return name;
  }
  for (final name in registeredNames) {
    if (name.toLowerCase() == value.toLowerCase()) return name;
  }
  return null;
}