TF-3514 Show explicit error when transfer base64 to cid

Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
dab246
2025-03-05 19:00:36 +07:00
committed by Dat H. Pham
parent 4765921a35
commit 915a4b26b8
4 changed files with 75 additions and 13 deletions
@@ -62,6 +62,7 @@ import 'package:tmail_ui_user/features/composer/presentation/extensions/email_ac
import 'package:tmail_ui_user/features/composer/presentation/extensions/get_draft_mailbox_id_for_composer_extension.dart';
import 'package:tmail_ui_user/features/composer/presentation/extensions/get_outbox_mailbox_id_for_composer_extension.dart';
import 'package:tmail_ui_user/features/composer/presentation/extensions/get_sent_mailbox_id_for_composer_extension.dart';
import 'package:tmail_ui_user/features/composer/presentation/extensions/handle_message_failure_extension.dart';
import 'package:tmail_ui_user/features/composer/presentation/extensions/list_identities_extension.dart';
import 'package:tmail_ui_user/features/composer/presentation/extensions/list_shared_media_file_extension.dart';
import 'package:tmail_ui_user/features/composer/presentation/mixin/drag_drog_file_mixin.dart';
@@ -1158,10 +1159,14 @@ class ComposerController extends BaseController
required BuildContext context,
required FeatureFailure failure
}) async {
final errorMessage = getMessageFailure(
appLocalizations: AppLocalizations.of(context),
exception: failure.exception,
);
await showConfirmDialogAction(
context,
title: '',
AppLocalizations.of(context).warningMessageWhenSendEmailFailure,
errorMessage,
AppLocalizations.of(context).edit,
cancelTitle: AppLocalizations.of(context).closeAnyway,
alignCenter: true,
@@ -2449,10 +2454,15 @@ class ComposerController extends BaseController
VoidCallback? onConfirmAction,
VoidCallback? onCancelAction,
}) async {
final errorMessage = getMessageFailure(
appLocalizations: AppLocalizations.of(context),
exception: failure.exception,
isDraft: true,
);
await showConfirmDialogAction(
context,
title: '',
AppLocalizations.of(context).warningMessageWhenSaveEmailToDraftsFailure,
errorMessage,
AppLocalizations.of(context).edit,
cancelTitle: AppLocalizations.of(context).closeAnyway,
alignCenter: true,
@@ -0,0 +1,43 @@
import 'package:jmap_dart_client/jmap/core/error/set_error.dart';
import 'package:tmail_ui_user/features/composer/domain/exceptions/set_method_exception.dart';
import 'package:tmail_ui_user/features/composer/presentation/composer_controller.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/set_error_extension.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
extension HandleMessageFailureExtension on ComposerController {
String getMessageFailure({
required AppLocalizations appLocalizations,
dynamic exception,
bool isDraft = false,
}) {
if (exception is! SetMethodException) {
return isDraft
? appLocalizations.warningMessageWhenSaveEmailToDraftsFailure
: appLocalizations.warningMessageWhenSendEmailFailure;
}
for (var error in exception.mapErrors.values) {
if (error.type != SetError.tooLarge && error.type != SetError.overQuota) {
continue;
}
if (isDraft) {
return error.toastMessageForSaveEmailAsDraftFailure(
appLocalizations: appLocalizations,
defaultMessage:appLocalizations.warningMessageWhenSaveEmailToDraftsFailure,
);
} else {
return error.toastMessageForSendEmailFailure(
appLocalizations: appLocalizations,
defaultMessage:appLocalizations.warningMessageWhenSendEmailFailure,
);
}
}
return isDraft
? appLocalizations.warningMessageWhenSaveEmailToDraftsFailure
: appLocalizations.warningMessageWhenSendEmailFailure;
}
}
@@ -2413,9 +2413,13 @@ class MailboxDashBoardController extends ReloadableController
for (var error in listErrors) {
if (error.type == SetError.tooLarge || error.type == SetError.overQuota) {
if (isDrafts) {
_showToastSendMessageFailure(error.toastMessageForSaveEmailAsDraftFailure(currentContext!));
_showToastSendMessageFailure(error.toastMessageForSaveEmailAsDraftFailure(
appLocalizations: AppLocalizations.of(currentContext!),
));
} else {
_showToastSendMessageFailure(error.toastMessageForSendEmailFailure(currentContext!));
_showToastSendMessageFailure(error.toastMessageForSendEmailFailure(
appLocalizations: AppLocalizations.of(currentContext!),
));
}
return true;
}
@@ -1,27 +1,32 @@
import 'package:flutter/widgets.dart';
import 'package:jmap_dart_client/jmap/core/error/set_error.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
extension SetErrorExtension on SetError {
String toastMessageForSendEmailFailure(BuildContext context) {
String toastMessageForSendEmailFailure({
required AppLocalizations appLocalizations,
String? defaultMessage,
}) {
if (type == SetError.tooLarge) {
return AppLocalizations.of(context).sendMessageFailureWithSetErrorTypeTooLarge;
return appLocalizations.sendMessageFailureWithSetErrorTypeTooLarge;
} else if (type == SetError.overQuota) {
return AppLocalizations.of(context).sendMessageFailureWithSetErrorTypeOverQuota;
return appLocalizations.sendMessageFailureWithSetErrorTypeOverQuota;
} else {
return AppLocalizations.of(context).sendMessageFailure;
return defaultMessage ?? appLocalizations.sendMessageFailure;
}
}
String toastMessageForSaveEmailAsDraftFailure(BuildContext context) {
String toastMessageForSaveEmailAsDraftFailure({
required AppLocalizations appLocalizations,
String? defaultMessage,
}) {
if (type == SetError.tooLarge) {
return AppLocalizations.of(context).saveEmailAsDraftFailureWithSetErrorTypeTooLarge;
return appLocalizations.saveEmailAsDraftFailureWithSetErrorTypeTooLarge;
} else if (type == SetError.overQuota) {
return AppLocalizations.of(context).saveEmailAsDraftFailureWithSetErrorTypeOverQuota;
return appLocalizations.saveEmailAsDraftFailureWithSetErrorTypeOverQuota;
} else {
return AppLocalizations.of(context).saveEmailAsDraftFailure;
return defaultMessage ?? appLocalizations.saveEmailAsDraftFailure;
}
}
}