retrieveEvents method

Future<Result<UnmodifiableListView<Event>>> retrieveEvents(
  1. String? calendarId,
  2. RetrieveEventsParams? retrieveEventsParams
)

Retrieves the events from the specified calendar

The calendarId paramter is the id of the calendar that plugin will return events for The retrieveEventsParams parameter combines multiple properties that specifies conditions of the events retrieval. For instance, defining RetrieveEventsParams.startDate and RetrieveEventsParams.endDate will return events only happening in that time range

Returns a Result containing a list Event, that fall into the specified parameters

Implementation

Future<Result<UnmodifiableListView<Event>>> retrieveEvents(
  String? calendarId,
  RetrieveEventsParams? retrieveEventsParams,
) async {
  return _invokeChannelMethod(
    ChannelConstants.methodNameRetrieveEvents,
    assertParameters: (result) {
      _validateCalendarIdParameter(
        result,
        calendarId,
      );

      _assertParameter(
        result,
        !((retrieveEventsParams?.eventIds?.isEmpty ?? true) &&
            ((retrieveEventsParams?.startDate == null ||
                    retrieveEventsParams?.endDate == null) ||
                (retrieveEventsParams?.startDate != null &&
                    retrieveEventsParams?.endDate != null &&
                    (retrieveEventsParams != null &&
                        retrieveEventsParams.startDate!
                            .isAfter(retrieveEventsParams.endDate!))))),
        ErrorCodes.invalidArguments,
        ErrorMessages.invalidRetrieveEventsParams,
      );
    },
    arguments: () => <String, Object?>{
      ChannelConstants.parameterNameCalendarId: calendarId,
      ChannelConstants.parameterNameStartDate:
          retrieveEventsParams?.startDate?.millisecondsSinceEpoch,
      ChannelConstants.parameterNameEndDate:
          retrieveEventsParams?.endDate?.millisecondsSinceEpoch,
      ChannelConstants.parameterNameEventIds: retrieveEventsParams?.eventIds,
    },
    evaluateResponse: (rawData) => UnmodifiableListView(
      json
          .decode(rawData)
          .map<Event>((decodedEvent) => Event.fromJson(decodedEvent)),
    ),
  );
}