TF-2644 Display warning dialog when drag from other email exceeded maximum size in composer

Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
dab246
2024-03-01 00:49:32 +07:00
committed by Dat H. Pham
parent 5fb314f315
commit ea30322cbd
3 changed files with 15 additions and 26 deletions
@@ -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/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/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/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/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/features/upload/domain/state/local_file_picker_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) { void _handlePickFileSuccess(LocalFilePickerSuccess success) {
uploadController.validateTotalSizeAttachmentsBeforeUpload( uploadController.validateTotalSizeAttachmentsBeforeUpload(
listFileInfo: success.pickedFiles, totalSizePreparedFiles: success.pickedFiles.totalSize,
callbackAction: () => _uploadAttachmentsAction(success.pickedFiles) callbackAction: () => _uploadAttachmentsAction(success.pickedFiles)
); );
} }
@@ -1297,7 +1298,7 @@ class ComposerController extends BaseController {
if (listFileAttachmentSharedMediaFile.isNotEmpty) { if (listFileAttachmentSharedMediaFile.isNotEmpty) {
final listFileInfo = covertListSharedMediaFileToFileInfo(listSharedMediaFile); final listFileInfo = covertListSharedMediaFileToFileInfo(listSharedMediaFile);
uploadController.validateTotalSizeAttachmentsBeforeUpload( uploadController.validateTotalSizeAttachmentsBeforeUpload(
listFileInfo: listFileInfo, totalSizePreparedFiles: listFileInfo.totalSize,
callbackAction: () => _uploadAttachmentsAction(listFileInfo) callbackAction: () => _uploadAttachmentsAction(listFileInfo)
); );
} }
@@ -1969,7 +1970,7 @@ class ComposerController extends BaseController {
void _addAttachmentFromDragAndDrop({required FileInfo fileInfo}) { void _addAttachmentFromDragAndDrop({required FileInfo fileInfo}) {
uploadController.validateTotalSizeAttachmentsBeforeUpload( uploadController.validateTotalSizeAttachmentsBeforeUpload(
listFileInfo: [fileInfo], totalSizePreparedFiles: fileInfo.fileSize,
callbackAction: () => _uploadAttachmentsAction([fileInfo]) callbackAction: () => _uploadAttachmentsAction([fileInfo])
); );
} }
@@ -2065,22 +2066,12 @@ class ComposerController extends BaseController {
_updateStatusEmailSendButton(); _updateStatusEmailSendButton();
} }
void addAttachmentFromDropZone(Attachment attachment) { void addAttachmentWhenDragFromOtherEmail(Attachment attachment) {
log('ComposerController::addAttachmentFromDropZone: $attachment'); log('ComposerController::addAttachmentWhenDragFromOtherEmail: attachment = $attachment');
if (!uploadController.isExceededMaxSizeAttachmentsPerEmail(totalSizePreparedFiles: attachment.size?.value ?? 0)) { uploadController.validateTotalSizeAttachmentsBeforeUpload(
uploadController.initializeUploadAttachments([attachment]); totalSizePreparedFiles: attachment.size?.value ?? 0,
} else { callbackAction: () => uploadController.initializeUploadAttachments([attachment])
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 _handleGetAllIdentitiesFailure(GetAllIdentitiesFailure failure) async { void _handleGetAllIdentitiesFailure(GetAllIdentitiesFailure failure) async {
@@ -385,7 +385,7 @@ class ComposerView extends GetWidget<ComposerController> {
child: DropZoneWidget( child: DropZoneWidget(
width: constraints.maxWidth, width: constraints.maxWidth,
height: constraints.maxHeight, height: constraints.maxHeight,
addAttachmentFromDropZone: controller.addAttachmentFromDropZone, addAttachmentFromDropZone: controller.addAttachmentWhenDragFromOtherEmail,
) )
) )
], ],
@@ -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/state/upload_attachment_state.dart';
import 'package:tmail_ui_user/features/composer/domain/usecases/upload_attachment_interactor.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/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/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/features/upload/presentation/extensions/upload_attachment_extension.dart'; import 'package:tmail_ui_user/features/upload/presentation/extensions/upload_attachment_extension.dart';
@@ -294,12 +293,11 @@ class UploadController extends BaseController {
} }
void validateTotalSizeAttachmentsBeforeUpload({ void validateTotalSizeAttachmentsBeforeUpload({
required List<FileInfo> listFileInfo, required num totalSizePreparedFiles,
VoidCallback? callbackAction VoidCallback? callbackAction
}) { }) {
final totalSizeListFiles = listFileInfo.totalSize; log('UploadController::_validateTotalSizeAttachmentsBeforeUpload: totalSizePreparedFiles = $totalSizePreparedFiles');
log('UploadController::_validateTotalSizeAttachmentsBeforeUpload: totalSizeListFiles = $totalSizeListFiles'); if (isExceededMaxSizeAttachmentsPerEmail(totalSizePreparedFiles: totalSizePreparedFiles)) {
if (isExceededMaxSizeAttachmentsPerEmail(totalSizePreparedFiles: totalSizeListFiles)) {
if (currentContext == null) { if (currentContext == null) {
log('UploadController::_validateTotalSizeAttachmentsBeforeUpload: CONTEXT IS NULL'); log('UploadController::_validateTotalSizeAttachmentsBeforeUpload: CONTEXT IS NULL');
return; return;
@@ -309,7 +307,7 @@ class UploadController extends BaseController {
return; return;
} }
if (isExceededMaxSizeFilesAttachedInComposer(totalSizePreparedFiles: totalSizeListFiles)) { if (isExceededMaxSizeFilesAttachedInComposer(totalSizePreparedFiles: totalSizePreparedFiles)) {
if (currentContext == null) { if (currentContext == null) {
log('UploadController::_validateTotalSizeAttachmentsBeforeUpload: CONTEXT IS NULL'); log('UploadController::_validateTotalSizeAttachmentsBeforeUpload: CONTEXT IS NULL');
return; return;