From 7bc466bea37f5c43bcf55f6205988ad4075669d6 Mon Sep 17 00:00:00 2001 From: DatDang Date: Wed, 10 Apr 2024 17:29:32 +0700 Subject: [PATCH] TF-2769 Catch upload attachment error to modify exception --- .../upload/data/network/file_uploader.dart | 79 +++++++++++-------- 1 file changed, 45 insertions(+), 34 deletions(-) diff --git a/lib/features/upload/data/network/file_uploader.dart b/lib/features/upload/data/network/file_uploader.dart index c6715357f..6ea27b476 100644 --- a/lib/features/upload/data/network/file_uploader.dart +++ b/lib/features/upload/data/network/file_uploader.dart @@ -81,43 +81,54 @@ class FileUploader { UploadFileArguments argsUpload, worker.TypeSendPort sendPort ) async { - final rootIsolateToken = argsUpload.isolateToken; - BackgroundIsolateBinaryMessenger.ensureInitialized(rootIsolateToken); - await HiveCacheConfig.instance.setUp(); + try { + final rootIsolateToken = argsUpload.isolateToken; + BackgroundIsolateBinaryMessenger.ensureInitialized(rootIsolateToken); + await HiveCacheConfig.instance.setUp(); - final headerParam = argsUpload.dioClient.getHeaders(); - headerParam[HttpHeaders.contentTypeHeader] = argsUpload.mobileFileUpload.mimeType; - headerParam[HttpHeaders.contentLengthHeader] = argsUpload.mobileFileUpload.fileSize; + final headerParam = argsUpload.dioClient.getHeaders(); + headerParam[HttpHeaders.contentTypeHeader] = argsUpload.mobileFileUpload.mimeType; + headerParam[HttpHeaders.contentLengthHeader] = argsUpload.mobileFileUpload.fileSize; - final mapExtra = { - uploadAttachmentExtraKey: { - filePathExtraKey: argsUpload.mobileFileUpload.filePath, - } - }; + final mapExtra = { + uploadAttachmentExtraKey: { + filePathExtraKey: argsUpload.mobileFileUpload.filePath, + } + }; - final resultJson = await argsUpload.dioClient.post( - Uri.decodeFull(argsUpload.uploadUri.toString()), - options: Options( - headers: headerParam, - extra: mapExtra - ), - data: File(argsUpload.mobileFileUpload.filePath).openRead(), - onSendProgress: (count, total) { - log('FileUploader::_handleUploadAttachmentAction():onSendProgress: FILE[${argsUpload.uploadId.id}] : { PROGRESS = $count | TOTAL = $total}'); - sendPort.send( - UploadingAttachmentUploadState( - argsUpload.uploadId, - count, - argsUpload.mobileFileUpload.fileSize - ) - ); - } - ); - log('FileUploader::_handleUploadAttachmentAction():resultJson: $resultJson'); - return _parsingResponse( - resultJson: resultJson, - fileName: argsUpload.mobileFileUpload.fileName - ); + final resultJson = await argsUpload.dioClient.post( + Uri.decodeFull(argsUpload.uploadUri.toString()), + options: Options( + headers: headerParam, + extra: mapExtra + ), + data: File(argsUpload.mobileFileUpload.filePath).openRead(), + onSendProgress: (count, total) { + log('FileUploader::_handleUploadAttachmentAction():onSendProgress: [${argsUpload.uploadId.id}] = $count'); + sendPort.send( + UploadingAttachmentUploadState( + argsUpload.uploadId, + count, + argsUpload.mobileFileUpload.fileSize + ) + ); + } + ); + log('FileUploader::_handleUploadAttachmentAction():resultJson: $resultJson'); + return _parsingResponse( + resultJson: resultJson, + fileName: argsUpload.mobileFileUpload.fileName + ); + } on DioError catch (exception) { + logError('FileUploader::_handleUploadAttachmentAction():DioError: $exception'); + + throw exception.copyWith( + requestOptions: exception.requestOptions.copyWith(data: '')); + } catch (exception) { + logError('FileUploader::_handleUploadAttachmentAction():OtherException: $exception'); + + rethrow; + } } Future _handleUploadAttachmentActionOnWeb(