joinRoom method

dynamic joinRoom({
  1. required String roomId,
  2. int? secret,
  3. String? userName,
})

Implementation

joinRoom({required String roomId, int? secret, String? userName}) async {
  Completer completer = Completer();
  try {
    if (_state != CallState.sessionState) {
      completer.completeError(
          {'error': 'The state that cannot join room, state $_state'});
      return;
    }
    if (roomId.length > 64) {
      completer.completeError({'error': 'Invalid room id'});
      return;
    }

    if (userName != null && userName.length > 64) {
      completer.completeError({'error': 'Too long user name: $userName'});
      return;
    }

    if (secret != null && secret.toString().length != 6) {
      completer
          .completeError({'error': 'Secret has to be 6 digits: $secret'});
      return;
    }

    var joinRoomResult = await _ws.requestJoinRoom(roomId, secret, userName);
    await _audioPublisher?.publish();
    _state = CallState.activeState;
    _roomId = joinRoomResult['room_id'];
    _roomType = joinRoomResult['room_type'];
    var userResult = IResponseJoinRoom(joinRoomResult).toMap();
    completer.complete(userResult);
    return completer.future;
  } catch (error) {
    completer.completeError(error);
  }
}