encodeEvent static method
Encodes an event as a version 1 map suitable for JSON or a channel.
Implementation
static Map<String, Object?> encodeEvent(JackfieldEvent event) {
final common = <String, Object?>{
'version': version,
'callId': event.callId.value,
'eventId': event.eventId.value,
'sequence': event.sequence,
'occurredAt': event.occurredAt.toUtc().toIso8601String(),
};
final encoded = switch (event) {
AnswerRequested(:final actionId, :final deadline) => {
...common,
'type': 'answer_requested',
'actionId': actionId.value,
'deadline': deadline.toUtc().toIso8601String(),
},
CallEnded(:final reason) => {
...common,
'type': 'ended',
'reason': reason.name,
},
};
decodeEvent(encoded);
return encoded;
}