From 59dfef3928d7b5dbf4fad42de498aeb52edfb12e Mon Sep 17 00:00:00 2001 From: dab246 Date: Tue, 24 Oct 2023 11:37:16 +0700 Subject: [PATCH] TF-2245 Fix upload attachment when token expired on mobile Signed-off-by: dab246 (cherry picked from commit f866a3830310767eb20d622a20b2c14a9c286471) --- .../config/authorization_interceptors.dart | 4 +++- .../upload/data/network/file_uploader.dart | 19 ++++++++++++++++--- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/lib/features/login/data/network/config/authorization_interceptors.dart b/lib/features/login/data/network/config/authorization_interceptors.dart index aa3aa3f03..26cbe141b 100644 --- a/lib/features/login/data/network/config/authorization_interceptors.dart +++ b/lib/features/login/data/network/config/authorization_interceptors.dart @@ -128,7 +128,9 @@ class AuthorizationInterceptors extends QueuedInterceptorsWrapper { final response = await _dio.request( requestOptions.path, - data: BodyBytesStream.fromBytes(uploadExtra[FileUploader.bytesExtraKey]), + data: uploadExtra[FileUploader.platformExtraKey] == 'web' + ? BodyBytesStream.fromBytes(uploadExtra[FileUploader.bytesExtraKey]) + : File(uploadExtra[FileUploader.filePathExtraKey]).openRead(), queryParameters: requestOptions.queryParameters, options: newOptions, ); diff --git a/lib/features/upload/data/network/file_uploader.dart b/lib/features/upload/data/network/file_uploader.dart index 349c7c4cc..7f71a308f 100644 --- a/lib/features/upload/data/network/file_uploader.dart +++ b/lib/features/upload/data/network/file_uploader.dart @@ -28,6 +28,7 @@ class FileUploader { static const String bytesExtraKey = 'bytes'; static const String typeExtraKey = 'type'; static const String sizeExtraKey = 'size'; + static const String filePathExtraKey = 'path'; final DioClient _dioClient; final worker.Executor _isolateExecutor; @@ -77,12 +78,24 @@ class FileUploader { final headerParam = argsUpload.dioClient.getHeaders(); headerParam[HttpHeaders.contentTypeHeader] = argsUpload.mobileFileUpload.mimeType; headerParam[HttpHeaders.contentLengthHeader] = argsUpload.mobileFileUpload.fileSize; - final data = File(argsUpload.mobileFileUpload.filePath).openRead(); + + final mapExtra = { + uploadAttachmentExtraKey: { + platformExtraKey: 'mobile', + filePathExtraKey: argsUpload.mobileFileUpload.filePath, + typeExtraKey: argsUpload.mobileFileUpload.mimeType, + sizeExtraKey: argsUpload.mobileFileUpload.fileSize, + } + }; + final resultJson = await argsUpload.dioClient.post( Uri.decodeFull(argsUpload.uploadUri.toString()), - options: Options(headers: headerParam), - data: data, + 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(