parseCallPush function

CallPush? parseCallPush(
  1. Map data
)

Reads a call push (the FCM message's data, or the VoIP push's payload: the same keys, at the top level). Null for anything else, including call pushes of a version this package does not know.

Implementation

CallPush? parseCallPush(Map<dynamic, dynamic> data) {
  if ('${data['v']}' != '1') return null;
  final callId = data['callId'];
  if (callId is! String || callId.isEmpty) return null;
  return switch (data['type']) {
    'call.incoming' => IncomingCallPush(
        callId,
        agentName: data['agentName'] as String?,
        ringDeadline: DateTime.tryParse('${data['ringDeadlineAt'] ?? ''}'),
      ),
    'call.ended' => CallEndedPush(callId, detail: CallEndDetail.parse(data['detail'] as String?)),
    _ => null,
  };
}