leave method

Future<void> leave()

Implementation

Future<void> leave() async {
  Completer completer = Completer();
  try {
    // if(session !=null && session.length > 64){
    //   completer.completeError('Invalid parameter, session');
    //   return;
    // }
    if (_state == CallState.nullState) {
      completer.completeError(
          {'error': 'The state that cannot leave, state $_state'});
    }

    if (_ws.channel?.closeCode != null) {
      completer
          .completeError({'error': 'Invalid websocket connection state'});
    }

    if (_session.isEmpty && _state == CallState.sessionState) {
      completer.completeError(
          {'error': 'The state that cannot leave, state $_state'});
    }

    await _ws.requestLeave(_session);
    completer.complete();
    freeResources();
    return completer.future;
  } catch (error) {
    completer.completeError(error);
  }
}