TF-2769 Catch upload attachment error to modify exception

This commit is contained in:
DatDang
2024-04-10 17:29:32 +07:00
committed by Dat H. Pham
parent f2a20970aa
commit 7bc466bea3
@@ -81,43 +81,54 @@ class FileUploader {
UploadFileArguments argsUpload, UploadFileArguments argsUpload,
worker.TypeSendPort sendPort worker.TypeSendPort sendPort
) async { ) async {
final rootIsolateToken = argsUpload.isolateToken; try {
BackgroundIsolateBinaryMessenger.ensureInitialized(rootIsolateToken); final rootIsolateToken = argsUpload.isolateToken;
await HiveCacheConfig.instance.setUp(); BackgroundIsolateBinaryMessenger.ensureInitialized(rootIsolateToken);
await HiveCacheConfig.instance.setUp();
final headerParam = argsUpload.dioClient.getHeaders(); final headerParam = argsUpload.dioClient.getHeaders();
headerParam[HttpHeaders.contentTypeHeader] = argsUpload.mobileFileUpload.mimeType; headerParam[HttpHeaders.contentTypeHeader] = argsUpload.mobileFileUpload.mimeType;
headerParam[HttpHeaders.contentLengthHeader] = argsUpload.mobileFileUpload.fileSize; headerParam[HttpHeaders.contentLengthHeader] = argsUpload.mobileFileUpload.fileSize;
final mapExtra = <String, dynamic>{ final mapExtra = <String, dynamic>{
uploadAttachmentExtraKey: { uploadAttachmentExtraKey: {
filePathExtraKey: argsUpload.mobileFileUpload.filePath, filePathExtraKey: argsUpload.mobileFileUpload.filePath,
} }
}; };
final resultJson = await argsUpload.dioClient.post( final resultJson = await argsUpload.dioClient.post(
Uri.decodeFull(argsUpload.uploadUri.toString()), Uri.decodeFull(argsUpload.uploadUri.toString()),
options: Options( options: Options(
headers: headerParam, headers: headerParam,
extra: mapExtra extra: mapExtra
), ),
data: File(argsUpload.mobileFileUpload.filePath).openRead(), data: File(argsUpload.mobileFileUpload.filePath).openRead(),
onSendProgress: (count, total) { onSendProgress: (count, total) {
log('FileUploader::_handleUploadAttachmentAction():onSendProgress: FILE[${argsUpload.uploadId.id}] : { PROGRESS = $count | TOTAL = $total}'); log('FileUploader::_handleUploadAttachmentAction():onSendProgress: [${argsUpload.uploadId.id}] = $count');
sendPort.send( sendPort.send(
UploadingAttachmentUploadState( UploadingAttachmentUploadState(
argsUpload.uploadId, argsUpload.uploadId,
count, count,
argsUpload.mobileFileUpload.fileSize argsUpload.mobileFileUpload.fileSize
) )
); );
} }
); );
log('FileUploader::_handleUploadAttachmentAction():resultJson: $resultJson'); log('FileUploader::_handleUploadAttachmentAction():resultJson: $resultJson');
return _parsingResponse( return _parsingResponse(
resultJson: resultJson, resultJson: resultJson,
fileName: argsUpload.mobileFileUpload.fileName 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<Attachment?> _handleUploadAttachmentActionOnWeb( Future<Attachment?> _handleUploadAttachmentActionOnWeb(