TF-2280 Fix upload attachment when token expired on mobile
Signed-off-by: dab246 <tdvu@linagora.com> (cherry picked from commit 320a75841427d30df453526ec2dc3c9853538514)
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
|
|
||||||
import 'package:core/data/network/dio_client.dart';
|
import 'package:core/data/network/dio_client.dart';
|
||||||
import 'package:equatable/equatable.dart';
|
import 'package:equatable/equatable.dart';
|
||||||
|
import 'package:flutter/services.dart';
|
||||||
import 'package:tmail_ui_user/features/upload/domain/model/mobile_file_upload.dart';
|
import 'package:tmail_ui_user/features/upload/domain/model/mobile_file_upload.dart';
|
||||||
import 'package:tmail_ui_user/features/upload/domain/model/upload_task_id.dart';
|
import 'package:tmail_ui_user/features/upload/domain/model/upload_task_id.dart';
|
||||||
|
|
||||||
@@ -10,12 +11,14 @@ class UploadFileArguments with EquatableMixin {
|
|||||||
final UploadTaskId uploadId;
|
final UploadTaskId uploadId;
|
||||||
final MobileFileUpload mobileFileUpload;
|
final MobileFileUpload mobileFileUpload;
|
||||||
final Uri uploadUri;
|
final Uri uploadUri;
|
||||||
|
final RootIsolateToken isolateToken;
|
||||||
|
|
||||||
UploadFileArguments(
|
UploadFileArguments(
|
||||||
this.dioClient,
|
this.dioClient,
|
||||||
this.uploadId,
|
this.uploadId,
|
||||||
this.mobileFileUpload,
|
this.mobileFileUpload,
|
||||||
this.uploadUri
|
this.uploadUri,
|
||||||
|
this.isolateToken,
|
||||||
);
|
);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -23,6 +26,7 @@ class UploadFileArguments with EquatableMixin {
|
|||||||
dioClient,
|
dioClient,
|
||||||
uploadId,
|
uploadId,
|
||||||
mobileFileUpload,
|
mobileFileUpload,
|
||||||
uploadUri
|
uploadUri,
|
||||||
|
isolateToken,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
@@ -10,15 +10,18 @@ import 'package:core/utils/app_logger.dart';
|
|||||||
import 'package:core/utils/platform_info.dart';
|
import 'package:core/utils/platform_info.dart';
|
||||||
import 'package:dartz/dartz.dart';
|
import 'package:dartz/dartz.dart';
|
||||||
import 'package:dio/dio.dart';
|
import 'package:dio/dio.dart';
|
||||||
|
import 'package:flutter/services.dart';
|
||||||
import 'package:get/get_connect/http/src/request/request.dart';
|
import 'package:get/get_connect/http/src/request/request.dart';
|
||||||
import 'package:model/email/attachment.dart';
|
import 'package:model/email/attachment.dart';
|
||||||
import 'package:model/upload/file_info.dart';
|
import 'package:model/upload/file_info.dart';
|
||||||
import 'package:model/upload/upload_response.dart';
|
import 'package:model/upload/upload_response.dart';
|
||||||
|
import 'package:tmail_ui_user/features/caching/config/hive_cache_config.dart';
|
||||||
import 'package:tmail_ui_user/features/upload/data/model/upload_file_arguments.dart';
|
import 'package:tmail_ui_user/features/upload/data/model/upload_file_arguments.dart';
|
||||||
import 'package:tmail_ui_user/features/upload/domain/exceptions/upload_exception.dart';
|
import 'package:tmail_ui_user/features/upload/domain/exceptions/upload_exception.dart';
|
||||||
import 'package:tmail_ui_user/features/upload/domain/extensions/file_info_extension.dart';
|
import 'package:tmail_ui_user/features/upload/domain/extensions/file_info_extension.dart';
|
||||||
import 'package:tmail_ui_user/features/upload/domain/model/upload_task_id.dart';
|
import 'package:tmail_ui_user/features/upload/domain/model/upload_task_id.dart';
|
||||||
import 'package:tmail_ui_user/features/upload/domain/state/attachment_upload_state.dart';
|
import 'package:tmail_ui_user/features/upload/domain/state/attachment_upload_state.dart';
|
||||||
|
import 'package:tmail_ui_user/main/exceptions/isolate_exception.dart';
|
||||||
import 'package:worker_manager/worker_manager.dart' as worker;
|
import 'package:worker_manager/worker_manager.dart' as worker;
|
||||||
|
|
||||||
class FileUploader {
|
class FileUploader {
|
||||||
@@ -50,13 +53,19 @@ class FileUploader {
|
|||||||
uploadUri,
|
uploadUri,
|
||||||
cancelToken: cancelToken);
|
cancelToken: cancelToken);
|
||||||
} else {
|
} else {
|
||||||
|
final rootIsolateToken = RootIsolateToken.instance;
|
||||||
|
if (rootIsolateToken == null) {
|
||||||
|
throw CanNotGetRootIsolateToken();
|
||||||
|
}
|
||||||
|
|
||||||
final mobileFileUpload = fileInfo.toMobileFileUpload();
|
final mobileFileUpload = fileInfo.toMobileFileUpload();
|
||||||
return await _isolateExecutor.execute(
|
return await _isolateExecutor.execute(
|
||||||
arg1: UploadFileArguments(
|
arg1: UploadFileArguments(
|
||||||
_dioClient,
|
_dioClient,
|
||||||
uploadId,
|
uploadId,
|
||||||
mobileFileUpload,
|
mobileFileUpload,
|
||||||
uploadUri
|
uploadUri,
|
||||||
|
rootIsolateToken,
|
||||||
),
|
),
|
||||||
fun1: _handleUploadAttachmentAction,
|
fun1: _handleUploadAttachmentAction,
|
||||||
notification: (value) {
|
notification: (value) {
|
||||||
@@ -75,6 +84,10 @@ class FileUploader {
|
|||||||
UploadFileArguments argsUpload,
|
UploadFileArguments argsUpload,
|
||||||
worker.TypeSendPort sendPort
|
worker.TypeSendPort sendPort
|
||||||
) async {
|
) async {
|
||||||
|
final rootIsolateToken = argsUpload.isolateToken;
|
||||||
|
BackgroundIsolateBinaryMessenger.ensureInitialized(rootIsolateToken);
|
||||||
|
await HiveCacheConfig().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;
|
||||||
@@ -88,7 +101,6 @@ class FileUploader {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
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(
|
||||||
|
|||||||
Reference in New Issue
Block a user