parseCallPush function
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,
};
}