getHistory method

Future<(List<HaState>?, HaFailure?)> getHistory({
  1. required String entityId,
  2. DateTime? startTime,
  3. DateTime? endTime,
})

Implementation

Future<(List<HaState>?, HaFailure?)> getHistory({
  required String entityId,
  DateTime? startTime,
  DateTime? endTime,
}) async {
  final startTimeStr = startTime?.toIso8601String();
  final params = {
    'filter_entity_id': entityId,
  };
  if (endTime != null) params['end_time'] = endTime.toIso8601String();
  final endpoint =
      '/api/history/period${startTimeStr != null ? '/$startTimeStr' : ''}'
      '${_formUrlParameters(params)}';
  final response = await sl.get<HttpClient>().get(url + endpoint, _headers);
  if (response.success) {
    final states = <HaState>[];
    final list = (jsonDecode(response.dataStr) as List?);
    for (var innerList in list ?? []) {
      for (var stateJson in innerList ?? []) {
        states.add(HaState.fromJson(stateJson));
      }
    }
    return (states, null);
  } else {
    return (null, HaFailure(message: response.dataStr));
  }

}