unsubscribe method

dynamic unsubscribe({
  1. required String publisherSession,
})

Implementation

unsubscribe({required String publisherSession}) async {
  Completer completer = Completer();
  try {
    if (_state != CallState.subscribeState &&
        _state != CallState.connectState &&
        _state != CallState.activeState) {
      completer.completeError(
          {'error': 'The state that cannot unsubscribe, state $_state'});
      return;
    }

    if (publisherSession.length > 128) {
      completer.completeError({'error': 'Invalid publisher session'});
      return;
    }

    if (!_subscribers.containsKey(publisherSession)) {
      completer.completeError({
        'error':
            'Invalid parameter, not found to unsubscribe, $publisherSession'
      });
      return;
    }
    var unsubscribeResult = await _ws.requestUnsubscribe(publisherSession);
    _subscribers.remove(publisherSession);
    var userResult = IResponseUnsubscribe(unsubscribeResult).toMap();
    completer.complete(userResult);
    return completer.future;
  } catch (error) {
    completer.completeError(error);
  }
}