responseToDeviceTraitConverter static method
List<Trait>
responseToDeviceTraitConverter(
- 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);
}
}