stopRecording method

Future<CockpitRecordingResult> stopRecording()

Implementation

Future<CockpitRecordingResult> stopRecording() {
  final stopping = _recordingStop;
  if (stopping != null) return stopping;

  final session = _activeRecordingSession;
  if (session == null) {
    return Future<CockpitRecordingResult>.value(
      CockpitRecordingResult(
        state: CockpitRecordingState.failed,
        failureReason: 'recordingNotActive',
      ),
    );
  }

  final recorder = nativeRecording;
  late final Future<CockpitRecordingResult> operation;
  operation =
      Future<CockpitRecordingResult>.sync(
        () => recorder.stopRecording(session: session),
      ).whenComplete(() {
        if (identical(_activeRecordingSession, session)) {
          _activeRecordingSession = null;
        }
        if (identical(_recordingStop, operation)) {
          _recordingStop = null;
        }
      });
  _recordingStop = operation;
  return operation;
}