getMeasurement method

  1. @override
Future<Measurement> getMeasurement()
override

Get a Calendar measurement for all events in all calendars based on the historic samplingConfiguration.

Implementation

@override
Future<Measurement> getMeasurement() async {
  if (_calendars == null) await _retrieveCalendars();

  // Fast out if calendars could not be retrieved, e.g. due to missing permissions.
  if (_calendars == null) {
    return Measurement.fromData(
      Error(message: 'The list of calendars could not be retrieved.'),
    );
  }

  DateTime startDate =
      samplingConfiguration.lastTime ??
      DateTime.now().subtract(samplingConfiguration.past);
  DateTime endDate = DateTime.now();

  // Get all events from all calendars.
  var events = await _deviceCalendar.listEvents(startDate, endDate);

  return Measurement(
    sensorStartTime: startDate.microsecondsSinceEpoch,
    sensorEndTime: endDate.microsecondsSinceEpoch,
    data: Calendar(startDate, endDate)
      ..calendarEvents = events
          .map((event) => CalendarEvent.fromEvent(event))
          .toList(),
  );
}