disableScreenShare method

Future<void> disableScreenShare()

Implementation

Future<void> disableScreenShare() async {
  Span? disableShareSpan;
  try {
    if (videoSDKTelemetery != null) {
      disableShareSpan = videoSDKTelemetery!.trace(
        spanName: 'disableShare() Calling',
      );
    }
  } catch (error) {}

  //
  if (_screenshareProducer != null) {
    //
    _screenShareInProgress = true;

    Span? audioProducerTrack;
    Span? producerTrack;
    if (_screenShareAudioProducer != null) {
      try {
        if (disableShareSpan != null) {
          audioProducerTrack = videoSDKTelemetery!.trace(
            spanName: 'Closing Share Audio Producer',
            span: disableShareSpan,
          );
        }
      } catch (error) {}

      //
      String screenShareAudioId = _screenShareAudioProducer!.id;

      //
      _removeProducer(
          _screenShareAudioProducer!, _ProducerType.screenShareAudioProducer);

      //
      _screenShareAudioProducer = null;

      try {
        //
        await _webSocket!.socket.request('closeProducer', {
          'producerId': screenShareAudioId,
        });

        if (audioProducerTrack != null) {
          videoSDKTelemetery!.completeSpan(
              span: audioProducerTrack,
              message: 'Requested Server to Close Audio Producer',
              status: StatusCode.ok);

          audioProducerTrack = null;
        }
      } catch (error) {
        //
        VideoSDKLog.createLog(
            message: "Error in audio disableShare() \n ${error.toString()}",
            logLevel: "ERROR");

        if (audioProducerTrack != null) {
          videoSDKTelemetery!.completeSpan(
              span: audioProducerTrack,
              message: 'Close Audio Producer Request to Server Failed',
              status: StatusCode.error);

          audioProducerTrack = null;
        }
        //
        log("disableShare error => $error");
      }
    }

    try {
      if (disableShareSpan != null) {
        producerTrack = videoSDKTelemetery!.trace(
          spanName: 'Closing Share Producer',
          span: disableShareSpan,
        );
      }
    } catch (error) {}

    //
    String screenShareId = _screenshareProducer!.id;

    //
    _removeProducer(_screenshareProducer!, _ProducerType.screenshareProducer);

    //
    _screenshareProducer = null;

    try {
      //
      await _webSocket!.socket.request('closeProducer', {
        'producerId': screenShareId,
      });

      if (producerTrack != null) {
        videoSDKTelemetery!.completeSpan(
            span: producerTrack,
            message: 'Requested Server to Close Producer',
            status: StatusCode.ok);

        producerTrack = null;
      }

      if (disableShareSpan != null) {
        videoSDKTelemetery!.completeSpan(
            span: disableShareSpan,
            message: 'Disable ScreenShare Successful',
            status: StatusCode.ok);
      }
    } catch (error) {
      //
      VideoSDKLog.createLog(
          message: "Error in disableShare() \n ${error.toString()}",
          logLevel: "ERROR");

      if (producerTrack != null) {
        videoSDKTelemetery!.completeSpan(
            span: producerTrack,
            message: 'Close Producer Request Failed',
            status: StatusCode.error);

        producerTrack = null;
      }

      if (disableShareSpan != null) {
        videoSDKTelemetery!.completeSpan(
            span: disableShareSpan,
            message: 'ScreenShare disabled Failed \n ${error.toString()}',
            status: StatusCode.error);
      }
      //
      log("disableShare error => $error");
    } finally {
      _closeForegroundService();

      //
      _screenShareInProgress = false;
    }
  } else {
    if (disableShareSpan != null) {
      videoSDKTelemetery!.completeSpan(
          span: disableShareSpan,
          message: 'Share Producer Not found',
          status: StatusCode.error);
    }
    //
    log("Screenshare is not enabled !!");
  }
}