FakeTcccCall.state constructor

FakeTcccCall.state(
  1. TcccCallState state, {
  2. TcccMediaMode mediaMode = TcccMediaMode.trtc,
  3. bool? isInRoom,
  4. String callId = 'fake-call',
  5. String channelId = '10086',
  6. String? peerDisplayName = 'Service',
  7. String? peerSubtitle,
  8. bool isMuted = false,
  9. TcccAudioRoute audioRoute = TcccAudioRoute.earpiece,
  10. bool reconnecting = false,
  11. TcccCause endedCause = TcccCause.terminated,
  12. TcccOriginator endedOriginator = TcccOriginator.local,
})

Implementation

factory FakeTcccCall.state(
  TcccCallState state, {
  TcccMediaMode mediaMode = TcccMediaMode.trtc,
  bool? isInRoom,
  String callId = 'fake-call',
  String channelId = '10086',
  String? peerDisplayName = 'Service',
  String? peerSubtitle,
  bool isMuted = false,
  TcccAudioRoute audioRoute = TcccAudioRoute.earpiece,
  bool reconnecting = false,
  TcccCause endedCause = TcccCause.terminated,
  TcccOriginator endedOriginator = TcccOriginator.local,
}) {
  final now = DateTime.now();
  final startedAt = now.subtract(const Duration(seconds: 5));
  final inRoom =
      isInRoom ??
      (mediaMode == TcccMediaMode.trtc &&
          (state == TcccCallState.earlyMedia ||
              state == TcccCallState.accepted));
  final ringingAt =
      state == TcccCallState.earlyMedia ||
          state == TcccCallState.accepted ||
          state == TcccCallState.ending
      ? now.subtract(const Duration(seconds: 3))
      : null;
  final connectedAt = state == TcccCallState.accepted
      ? now
      : (state == TcccCallState.ending
            ? now.subtract(const Duration(seconds: 1))
            : null);
  final status = TcccCallSnapshot(
    state: state,
    callId: callId,
    channelId: channelId,
    peerDisplayName: peerDisplayName,
    peerSubtitle: peerSubtitle,
    mediaMode: mediaMode,
    isIvr: mediaMode == TcccMediaMode.signalingOnly,
    isInRoom: inRoom,
    isMuted: isMuted,
    audioRoute: audioRoute,
    callStartedAt: startedAt,
    ringingAt: ringingAt,
    connectedAt: connectedAt,
    signalingReconnecting: reconnecting,
    lastCause: state == TcccCallState.ending ? endedCause : null,
    lastOriginator: state == TcccCallState.ending ? endedOriginator : null,
  );
  TcccCallResult? result;
  if (state == TcccCallState.ending) {
    final endedAt = startedAt.add(const Duration(seconds: 8));
    result = TcccCallResult(
      callId: callId,
      channelId: channelId,
      cause: endedCause,
      causeMessage: endedCause.value,
      originator: endedOriginator,
      startedAt: startedAt,
      ringingAt: ringingAt,
      connectedAt: connectedAt,
      endedAt: endedAt,
    );
  }
  return FakeTcccCall(
    callId: callId,
    channelId: channelId,
    startedAt: startedAt,
    status: status,
    result: result,
  );
}