processImage method
Future<void>
processImage(
- String setupFailedError,
- String imageDataTooLargeError,
- String serverCouldNotProcessImageError,
- String mediaFormatNotSupportedError,
)
Implementation
Future<void> processImage(String setupFailedError, String imageDataTooLargeError, String serverCouldNotProcessImageError, String mediaFormatNotSupportedError) async {
if (_isDisposed || state.capturedImage == null) {
return;
}
final capturedImageFile = state.capturedImage!;
if (state.showError) {
dismissError();
}
_safeSetState(state.copyWith(isProcessing: true, uploadProgress: 0.04));
final videoFile = await stopVideoRecording();
await stopSession();
_cancelUploadTask();
_uploadTask = Completer<void>();
if (_isDisposed) {
return;
}
try {
await simulatePreparationProgress();
if (!_isDisposed) {
await uploadImageAndVideo(capturedImageFile, videoFile, setupFailedError, imageDataTooLargeError, serverCouldNotProcessImageError, mediaFormatNotSupportedError);
}
if (!_isDisposed) {
_safeSetState(DocumentScanState(
screen: side == DocumentSide.front
? AppScreen.scanIdDocumentFrontScreen
: AppScreen.scanIdDocumentBackScreen,
currentSide: side,
cameraState: CameraState.ready,
));
try {
if (await capturedImageFile.exists()) {
await capturedImageFile.delete();
}
} catch (e) {
// Handle error silently
}
}
_uploadTask?.complete();
} catch (error) {
if (error != 'Cancelled' && !_isDisposed) {
_handleUploadError(error, setupFailedError, imageDataTooLargeError, serverCouldNotProcessImageError, mediaFormatNotSupportedError);
}
}
}