markAsDelivered method

Future<void> markAsDelivered({
  1. required Map<String, dynamic> data,
})

Mark a message as delivered with given payload from push notification

Implementation

Future<void> markAsDelivered({required Map<String, dynamic> data}) async {
  Map<String, dynamic>? sendbird = data['sendbird'];
  String? appId, userId, channelUrl, sessionKey;
  int? createdAt;

  if (sendbird != null) {
    Map<String, dynamic>? recipient = sendbird['recipient'];
    Map<String, dynamic>? channel = sendbird['channel'];
    Map<String, dynamic>? session = sendbird['session_key'];

    createdAt = sendbird['created_at'];
    appId = sendbird['app_id'];

    if (recipient != null) userId = recipient['id'];
    if (channel != null) channelUrl = channel['channel_url'];
    if (session != null) sessionKey = session['key'];
  }

  if (appId != null &&
      userId != null &&
      channelUrl != null &&
      sessionKey != null &&
      createdAt != null) {
    SendbirdSdk(appId: appId);

    _int.sessionManager.setUserId(_int.state.userId ?? userId);
    _int.sessionManager.setSessionKey(sessionKey);

    await _int.api.send(GroupChannelMarkAsDeliveredRequest(
      channelUrl: channelUrl,
      userId: userId,
      timestamp: createdAt,
    ));
  } else {
    throw InvalidParameterError();
  }
}