encodeEvent static method

Map<String, Object?> encodeEvent(
  1. JackfieldEvent event
)

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;
}