stopRecording method
Implementation
Future<CockpitRecordingResult> stopRecording({
required CockpitRecordingSession session,
}) async {
final payload = await _channel
.invokeMethod<Object?>('stopRecording', <String, Object?>{
'purpose': session.request.purpose.name,
'name': session.request.name,
'relativePath': cockpitRecordingRelativePathFor(session.request),
});
if (payload is! Map<Object?, Object?>) {
throw StateError('Stop recording returned an invalid payload.');
}
final bytes = payload['bytes'];
final state = CockpitRecordingState.fromJson(payload['state']);
final relativePath = cockpitRecordingRelativePathFor(session.request);
return CockpitRecordingResult(
state: state,
purpose: session.request.purpose,
recordingKind: payload['recordingKind'] == null
? CockpitRecordingKind.nativeScreen
: CockpitRecordingKind.fromJson(payload['recordingKind']),
requestedMode: session.request.mode,
requestedLayer: session.request.layer,
effectiveLayer: payload['effectiveLayer'] == null
? session.request.layer
: CockpitRecordingLayer.fromJson(payload['effectiveLayer']),
fallbackUsed: payload['fallbackUsed'] as bool? ?? false,
fallbackReason: payload['fallbackReason'] as String?,
artifact: state == CockpitRecordingState.completed
? CockpitArtifactRef(role: 'recording', relativePath: relativePath)
: null,
durationMs: payload['durationMs'] as int?,
bytes: bytes == null ? null : (bytes is Uint8List ? bytes : null),
sourceFilePath: payload['sourceFilePath'] as String?,
failureReason: payload['failureReason'] as String?,
);
}