From ea30322cbd474d4f8d20fc61a386739aecddfc90 Mon Sep 17 00:00:00 2001 From: dab246 Date: Fri, 1 Mar 2024 00:49:32 +0700 Subject: [PATCH] TF-2644 Display warning dialog when drag from other email exceeded maximum size in composer Signed-off-by: dab246 --- .../presentation/composer_controller.dart | 29 +++++++------------ .../presentation/composer_view_web.dart | 2 +- .../controller/upload_controller.dart | 10 +++---- 3 files changed, 15 insertions(+), 26 deletions(-) diff --git a/lib/features/composer/presentation/composer_controller.dart b/lib/features/composer/presentation/composer_controller.dart index 162a87958..8b8a295d4 100644 --- a/lib/features/composer/presentation/composer_controller.dart +++ b/lib/features/composer/presentation/composer_controller.dart @@ -80,6 +80,7 @@ import 'package:tmail_ui_user/features/sending_queue/presentation/model/sending_ import 'package:tmail_ui_user/features/server_settings/domain/state/get_always_read_receipt_setting_state.dart'; import 'package:tmail_ui_user/features/server_settings/domain/usecases/get_always_read_receipt_setting_interactor.dart'; import 'package:tmail_ui_user/features/upload/domain/extensions/list_file_info_extension.dart'; +import 'package:tmail_ui_user/features/upload/domain/extensions/list_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/state/attachment_upload_state.dart'; import 'package:tmail_ui_user/features/upload/domain/state/local_file_picker_state.dart'; @@ -1075,7 +1076,7 @@ class ComposerController extends BaseController { void _handlePickFileSuccess(LocalFilePickerSuccess success) { uploadController.validateTotalSizeAttachmentsBeforeUpload( - listFileInfo: success.pickedFiles, + totalSizePreparedFiles: success.pickedFiles.totalSize, callbackAction: () => _uploadAttachmentsAction(success.pickedFiles) ); } @@ -1297,7 +1298,7 @@ class ComposerController extends BaseController { if (listFileAttachmentSharedMediaFile.isNotEmpty) { final listFileInfo = covertListSharedMediaFileToFileInfo(listSharedMediaFile); uploadController.validateTotalSizeAttachmentsBeforeUpload( - listFileInfo: listFileInfo, + totalSizePreparedFiles: listFileInfo.totalSize, callbackAction: () => _uploadAttachmentsAction(listFileInfo) ); } @@ -1969,7 +1970,7 @@ class ComposerController extends BaseController { void _addAttachmentFromDragAndDrop({required FileInfo fileInfo}) { uploadController.validateTotalSizeAttachmentsBeforeUpload( - listFileInfo: [fileInfo], + totalSizePreparedFiles: fileInfo.fileSize, callbackAction: () => _uploadAttachmentsAction([fileInfo]) ); } @@ -2065,22 +2066,12 @@ class ComposerController extends BaseController { _updateStatusEmailSendButton(); } - void addAttachmentFromDropZone(Attachment attachment) { - log('ComposerController::addAttachmentFromDropZone: $attachment'); - if (!uploadController.isExceededMaxSizeAttachmentsPerEmail(totalSizePreparedFiles: attachment.size?.value ?? 0)) { - uploadController.initializeUploadAttachments([attachment]); - } else { - if (currentContext != null) { - showConfirmDialogAction( - currentContext!, - AppLocalizations.of(currentContext!).message_dialog_upload_attachments_exceeds_maximum_size( - filesize(mailboxDashBoardController.maxSizeAttachmentsPerEmail?.value ?? 0, 0)), - AppLocalizations.of(currentContext!).got_it, - title: AppLocalizations.of(currentContext!).maximum_files_size, - hasCancelButton: false, - ); - } - } + void addAttachmentWhenDragFromOtherEmail(Attachment attachment) { + log('ComposerController::addAttachmentWhenDragFromOtherEmail: attachment = $attachment'); + uploadController.validateTotalSizeAttachmentsBeforeUpload( + totalSizePreparedFiles: attachment.size?.value ?? 0, + callbackAction: () => uploadController.initializeUploadAttachments([attachment]) + ); } void _handleGetAllIdentitiesFailure(GetAllIdentitiesFailure failure) async { diff --git a/lib/features/composer/presentation/composer_view_web.dart b/lib/features/composer/presentation/composer_view_web.dart index 409921903..3cf878816 100644 --- a/lib/features/composer/presentation/composer_view_web.dart +++ b/lib/features/composer/presentation/composer_view_web.dart @@ -385,7 +385,7 @@ class ComposerView extends GetWidget { child: DropZoneWidget( width: constraints.maxWidth, height: constraints.maxHeight, - addAttachmentFromDropZone: controller.addAttachmentFromDropZone, + addAttachmentFromDropZone: controller.addAttachmentWhenDragFromOtherEmail, ) ) ], diff --git a/lib/features/upload/presentation/controller/upload_controller.dart b/lib/features/upload/presentation/controller/upload_controller.dart index eb591053b..38342ba40 100644 --- a/lib/features/upload/presentation/controller/upload_controller.dart +++ b/lib/features/upload/presentation/controller/upload_controller.dart @@ -21,7 +21,6 @@ import 'package:tmail_ui_user/features/base/state/base_ui_state.dart'; import 'package:tmail_ui_user/features/composer/domain/state/upload_attachment_state.dart'; import 'package:tmail_ui_user/features/composer/domain/usecases/upload_attachment_interactor.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart'; -import 'package:tmail_ui_user/features/upload/domain/extensions/list_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/state/attachment_upload_state.dart'; import 'package:tmail_ui_user/features/upload/presentation/extensions/upload_attachment_extension.dart'; @@ -294,12 +293,11 @@ class UploadController extends BaseController { } void validateTotalSizeAttachmentsBeforeUpload({ - required List listFileInfo, + required num totalSizePreparedFiles, VoidCallback? callbackAction }) { - final totalSizeListFiles = listFileInfo.totalSize; - log('UploadController::_validateTotalSizeAttachmentsBeforeUpload: totalSizeListFiles = $totalSizeListFiles'); - if (isExceededMaxSizeAttachmentsPerEmail(totalSizePreparedFiles: totalSizeListFiles)) { + log('UploadController::_validateTotalSizeAttachmentsBeforeUpload: totalSizePreparedFiles = $totalSizePreparedFiles'); + if (isExceededMaxSizeAttachmentsPerEmail(totalSizePreparedFiles: totalSizePreparedFiles)) { if (currentContext == null) { log('UploadController::_validateTotalSizeAttachmentsBeforeUpload: CONTEXT IS NULL'); return; @@ -309,7 +307,7 @@ class UploadController extends BaseController { return; } - if (isExceededMaxSizeFilesAttachedInComposer(totalSizePreparedFiles: totalSizeListFiles)) { + if (isExceededMaxSizeFilesAttachedInComposer(totalSizePreparedFiles: totalSizePreparedFiles)) { if (currentContext == null) { log('UploadController::_validateTotalSizeAttachmentsBeforeUpload: CONTEXT IS NULL'); return;