responseToDeviceTraitConverter static method

List<Trait> responseToDeviceTraitConverter(
  1. dynamic deviceTraits
)

Implementation

static List<Trait> responseToDeviceTraitConverter(dynamic deviceTraits) {
  // There are two generated types which probably should be same
  // We probably can clean it up a little bit to avoid duplications
  if ((deviceTraits as List).length == 0) {
    return [];
  }

  if (deviceTraits is List<GgetDeviceData_device_traits>) {
    return deviceTraits.map((trait) {
      if (trait.name
          .toString()
          .toLowerCase()
          .contains('thermostat_setting')) {
        return ThermostatTrait(
            'thermostat_setting',
            TargetTemperature((trait
                    as GgetDeviceData_device_traits__asThermostatSettingDeviceTrait)
                .state
                .targetTemperature
                .reported
                ?.value));
      }
      if (trait.name.toString().toLowerCase().contains('lock')) {
        return LockTrait(
            'lock',
            IsLocked(
                (trait as GgetDeviceData_device_traits__asLockDeviceTrait)
                    .state
                    .isLocked
                    .reported!
                    .value));
      }
      return UnknownTrait();
    }).toList();
  } else if (deviceTraits
      is List<GgetDevicesData_me_devices_edges_node_traits>) {
    return deviceTraits.map((trait) {
      if (trait.name
          .toString()
          .toLowerCase()
          .contains('thermostat_setting')) {
        return ThermostatTrait(
            'thermostat_setting',
            TargetTemperature((trait
                    as GgetDevicesData_me_devices_edges_node_traits__asThermostatSettingDeviceTrait)
                .state
                .targetTemperature
                .reported
                ?.value));
      }
      if (trait.name.toString().toLowerCase().contains('lock')) {
        return LockTrait(
            'lock',
            IsLocked((trait
                    as GgetDevicesData_me_devices_edges_node_traits__asLockDeviceTrait)
                .state
                .isLocked
                .reported!
                .value));
      }
      return UnknownTrait();
    }).toList();
  } else {
    throw ArgumentError.value(deviceTraits);
  }
}