TF-2245 Fix upload attachment when token expired on mobile

Signed-off-by: dab246 <tdvu@linagora.com>
(cherry picked from commit f866a3830310767eb20d622a20b2c14a9c286471)
This commit is contained in:
dab246
2023-10-24 11:37:16 +07:00
committed by Dat H. Pham
parent 14047c9ccc
commit 59dfef3928
2 changed files with 19 additions and 4 deletions
@@ -128,7 +128,9 @@ class AuthorizationInterceptors extends QueuedInterceptorsWrapper {
final response = await _dio.request( final response = await _dio.request(
requestOptions.path, 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, queryParameters: requestOptions.queryParameters,
options: newOptions, options: newOptions,
); );
@@ -28,6 +28,7 @@ class FileUploader {
static const String bytesExtraKey = 'bytes'; static const String bytesExtraKey = 'bytes';
static const String typeExtraKey = 'type'; static const String typeExtraKey = 'type';
static const String sizeExtraKey = 'size'; static const String sizeExtraKey = 'size';
static const String filePathExtraKey = 'path';
final DioClient _dioClient; final DioClient _dioClient;
final worker.Executor _isolateExecutor; final worker.Executor _isolateExecutor;
@@ -77,12 +78,24 @@ class FileUploader {
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 data = File(argsUpload.mobileFileUpload.filePath).openRead();
final mapExtra = <String, dynamic>{
uploadAttachmentExtraKey: {
platformExtraKey: 'mobile',
filePathExtraKey: argsUpload.mobileFileUpload.filePath,
typeExtraKey: argsUpload.mobileFileUpload.mimeType,
sizeExtraKey: argsUpload.mobileFileUpload.fileSize,
}
};
final resultJson = await argsUpload.dioClient.post( final resultJson = await argsUpload.dioClient.post(
Uri.decodeFull(argsUpload.uploadUri.toString()), Uri.decodeFull(argsUpload.uploadUri.toString()),
options: Options(headers: headerParam), options: Options(
data: data, headers: headerParam,
extra: mapExtra
),
data: File(argsUpload.mobileFileUpload.filePath).openRead(),
onSendProgress: (count, total) { onSendProgress: (count, total) {
log('FileUploader::_handleUploadAttachmentAction():onSendProgress: [${argsUpload.uploadId.id}] = $count'); log('FileUploader::_handleUploadAttachmentAction():onSendProgress: [${argsUpload.uploadId.id}] = $count');
sendPort.send( sendPort.send(