Change from mailbox to folder (#2156)

(cherry picked from commit 1bdaa417a25648bbe5e9c3637c413c246da3d7ef)
This commit is contained in:
Dat PHAM HOANG
2023-10-23 12:13:01 +07:00
committed by Dat H. Pham
parent 60425888b3
commit e17f9ab4b1
36 changed files with 3128 additions and 1573 deletions
@@ -5,12 +5,14 @@ import 'package:core/presentation/views/bottom_popup/confirmation_dialog_action_
import 'package:core/presentation/views/dialog/confirmation_dialog_builder.dart';
import 'package:core/presentation/views/dialog/edit_text_dialog_builder.dart';
import 'package:core/presentation/views/modal_sheets/edit_text_modal_sheet_builder.dart';
import 'package:core/utils/app_logger.dart';
import 'package:core/utils/platform_info.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:get/get.dart';
import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:jmap_dart_client/jmap/core/session/session.dart';
import 'package:jmap_dart_client/jmap/core/state.dart' as jmap;
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
import 'package:model/extensions/presentation_mailbox_extension.dart';
import 'package:model/mailbox/expand_mode.dart';
@@ -33,18 +35,16 @@ import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_catego
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_node.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_tree.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_tree_builder.dart';
import 'package:core/utils/app_logger.dart';
import 'package:tmail_ui_user/features/mailbox_creator/domain/model/verification/duplicate_name_validator.dart';
import 'package:tmail_ui_user/features/mailbox_creator/domain/model/verification/empty_name_validator.dart';
import 'package:tmail_ui_user/features/mailbox_creator/presentation/extensions/validator_failure_extension.dart';
import 'package:tmail_ui_user/features/mailbox_creator/domain/state/verify_name_view_state.dart';
import 'package:tmail_ui_user/features/mailbox_creator/domain/usecases/verify_name_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_creator/presentation/extensions/validator_failure_extension.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
import 'package:tmail_ui_user/main/routes/app_routes.dart';
import 'package:tmail_ui_user/main/routes/dialog_router.dart';
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
import 'package:jmap_dart_client/jmap/core/state.dart' as jmap;
abstract class BaseMailboxController extends BaseController {
final TreeBuilder _treeBuilder;
@@ -310,7 +310,7 @@ abstract class BaseMailboxController extends BaseController {
if (responsiveUtils.isMobile(context)) {
(EditTextModalSheetBuilder()
..key(const Key('rename_mailbox_dialog'))
..title(AppLocalizations.of(context).rename_mailbox)
..title(AppLocalizations.of(context).renameFolder)
..cancelText(AppLocalizations.of(context).cancel)
..boxConstraints(responsiveUtils.isLandscapeMobile(context)
? const BoxConstraints(maxWidth: 400)
@@ -343,7 +343,7 @@ abstract class BaseMailboxController extends BaseController {
builder: (context) =>
PointerInterceptor(child: (EditTextDialogBuilder()
..key(const Key('rename_mailbox_dialog'))
..title(AppLocalizations.of(context).rename_mailbox)
..title(AppLocalizations.of(context).renameFolder)
..cancelText(AppLocalizations.of(context).cancel)
..setErrorString((value) {
return verifyMailboxNameAction(
@@ -412,7 +412,7 @@ abstract class BaseMailboxController extends BaseController {
}) {
if (responsiveUtils.isLandscapeMobile(context) || responsiveUtils.isPortraitMobile(context)) {
(ConfirmationDialogActionSheetBuilder(context)
..messageText(AppLocalizations.of(context).message_confirmation_dialog_delete_mailbox(presentationMailbox.getDisplayName(context)))
..messageText(AppLocalizations.of(context).message_confirmation_dialog_delete_folder(presentationMailbox.getDisplayName(context)))
..onCancelAction(AppLocalizations.of(context).cancel, () => popBack())
..onConfirmAction(AppLocalizations.of(context).delete, () => onDeleteMailboxAction(presentationMailbox))
).show();
@@ -423,8 +423,8 @@ abstract class BaseMailboxController extends BaseController {
builder: (context) => PointerInterceptor(
child: (ConfirmDialogBuilder(imagePaths)
..key(const Key('confirm_dialog_delete_mailbox'))
..title(AppLocalizations.of(context).delete_mailboxes)
..content(AppLocalizations.of(context).message_confirmation_dialog_delete_mailbox(presentationMailbox.getDisplayName(context)))
..title(AppLocalizations.of(context).deleteFolders)
..content(AppLocalizations.of(context).message_confirmation_dialog_delete_folder(presentationMailbox.getDisplayName(context)))
..addIcon(SvgPicture.asset(imagePaths.icRemoveDialog, fit: BoxFit.fill))
..colorConfirmButton(AppColor.colorConfirmActionDialog)
..styleTextConfirmButton(const TextStyle(
@@ -68,7 +68,7 @@ mixin MailboxActionHandlerMixin {
} else {
appToast.showToastWarningMessage(
context,
AppLocalizations.of(context).noEmailInYourCurrentMailbox
AppLocalizations.of(context).noEmailInYourCurrentFolder
);
}
}))
@@ -95,7 +95,7 @@ mixin MailboxActionHandlerMixin {
} else {
appToast.showToastWarningMessage(
context,
AppLocalizations.of(context).noEmailInYourCurrentMailbox
AppLocalizations.of(context).noEmailInYourCurrentFolder
);
}
})
@@ -128,7 +128,7 @@ mixin MailboxActionHandlerMixin {
} else {
appToast.showToastWarningMessage(
context,
AppLocalizations.of(context).noEmailInYourCurrentMailbox
AppLocalizations.of(context).noEmailInYourCurrentFolder
);
}
}))
@@ -155,7 +155,7 @@ mixin MailboxActionHandlerMixin {
} else {
appToast.showToastWarningMessage(
context,
AppLocalizations.of(context).noEmailInYourCurrentMailbox
AppLocalizations.of(context).noEmailInYourCurrentFolder
);
}
})
@@ -39,7 +39,7 @@ extension EmailActionTypeExtension on EmailActionType {
String getToastMessageMoveToMailboxSuccess(BuildContext context, {String? destinationPath}) {
switch(this) {
case EmailActionType.moveToMailbox:
return AppLocalizations.of(context).moved_to_mailbox(destinationPath ?? '');
return AppLocalizations.of(context).movedToFolder(destinationPath ?? '');
case EmailActionType.moveToTrash:
return AppLocalizations.of(context).moved_to_trash;
case EmailActionType.moveToSpam:
@@ -10,8 +10,8 @@ import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:jmap_dart_client/jmap/core/error/method/error_method_response.dart';
import 'package:jmap_dart_client/jmap/core/id.dart';
import 'package:jmap_dart_client/jmap/core/session/session.dart';
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
import 'package:jmap_dart_client/jmap/core/state.dart' as jmap;
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
import 'package:model/model.dart';
import 'package:tmail_ui_user/features/base/base_mailbox_controller.dart';
import 'package:tmail_ui_user/features/destination_picker/presentation/model/destination_picker_arguments.dart';
@@ -342,9 +342,9 @@ class DestinationPickerController extends BaseMailboxController {
void _createNewMailboxFailure(CreateNewMailboxFailure failure) {
if (currentOverlayContext != null && currentContext != null) {
final exception = failure.exception;
var messageError = AppLocalizations.of(currentContext!).create_new_mailbox_failure;
var messageError = AppLocalizations.of(currentContext!).createNewFolderFailure;
if (exception is ErrorMethodResponse) {
messageError = exception.description ?? AppLocalizations.of(currentContext!).create_new_mailbox_failure;
messageError = exception.description ?? AppLocalizations.of(currentContext!).createNewFolderFailure;
}
_appToast.showToastErrorMessage(currentOverlayContext!, messageError);
}
@@ -7,8 +7,8 @@ import 'package:core/presentation/views/button/icon_button_web.dart';
import 'package:core/presentation/views/list/tree_view.dart';
import 'package:core/presentation/views/search/search_bar_view.dart';
import 'package:core/presentation/views/text/text_field_builder.dart';
import 'package:core/utils/platform_info.dart';
import 'package:core/utils/direction_utils.dart';
import 'package:core/utils/platform_info.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:get/get.dart';
@@ -172,7 +172,7 @@ class DestinationPickerView extends GetWidget<DestinationPickerController>
overflow: CommonTextStyle.defaultTextOverFlow),
focusNode: controller.nameInputFocusNode,
decoration: (CreateMailboxNameInputDecorationBuilder()
..setHintText(AppLocalizations.of(context).hint_input_create_new_mailbox)
..setHintText(AppLocalizations.of(context).hintInputCreateNewFolder)
..setErrorText(controller.getErrorInputNameString(context)))
.build(),
))
@@ -203,7 +203,7 @@ class DestinationPickerView extends GetWidget<DestinationPickerController>
SearchBarView(
_imagePaths,
margin: const EdgeInsets.all(16),
hintTextSearch: AppLocalizations.of(context).hint_search_mailboxes,
hintTextSearch: AppLocalizations.of(context).hintSearchFolders,
onOpenSearchViewAction: controller.enableSearch
),
_buildLoadingView(),
@@ -450,7 +450,7 @@ class DestinationPickerView extends GetWidget<DestinationPickerController>
),
const SizedBox(width: 8),
Expanded(child: Text(
AppLocalizations.of(context).allMailboxes,
AppLocalizations.of(context).allFolders,
maxLines: 1,
softWrap: CommonTextStyle.defaultSoftWrap,
overflow: CommonTextStyle.defaultTextOverFlow,
@@ -502,7 +502,7 @@ class DestinationPickerView extends GetWidget<DestinationPickerController>
PresentationMailbox newPresentationMailbox;
if (presentationMailbox.id == PresentationMailbox.unifiedMailbox.id) {
newPresentationMailbox = presentationMailbox
.toPresentationMailboxWithMailboxPath(AppLocalizations.of(context).allMailboxes);
.toPresentationMailboxWithMailboxPath(AppLocalizations.of(context).allFolders);
} else {
final path = controller.findNodePath(presentationMailbox.id)
?? presentationMailbox.name?.name;
@@ -551,7 +551,7 @@ class DestinationPickerView extends GetWidget<DestinationPickerController>
width: 18,
height: 18,
fit: BoxFit.fill),
hintText: AppLocalizations.of(context).hint_search_mailboxes,
hintText: AppLocalizations.of(context).hintSearchFolders,
onClearTextSearchAction: controller.clearSearchText,
onTextChangeSearchAction: (query) => controller.searchMailbox(context, query),
onSearchTextAction: (query) => controller.searchMailbox(context, query),
@@ -11,7 +11,7 @@ enum DestinationScreenType {
case DestinationScreenType.destinationPicker:
return mailboxActionTitle;
case DestinationScreenType.createNewMailbox:
return AppLocalizations.of(context).createNewMailbox;
return AppLocalizations.of(context).createNewFolder;
}
}
}
@@ -9,9 +9,9 @@ enum MailboxSubscribeAction {
String getToastMessageSuccess(BuildContext context) {
switch(this) {
case MailboxSubscribeAction.subscribe:
return AppLocalizations.of(context).toastMessageShowMailboxSuccess;
return AppLocalizations.of(context).toastMessageShowFolderSuccess;
case MailboxSubscribeAction.unSubscribe:
return AppLocalizations.of(context).toastMsgHideMailboxSuccess;
return AppLocalizations.of(context).toastMsgHideFolderSuccess;
case MailboxSubscribeAction.undo:
return '';
}
@@ -539,9 +539,9 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
void _createNewMailboxFailure(CreateNewMailboxFailure failure) {
if (currentOverlayContext != null && currentContext != null) {
final exception = failure.exception;
var messageError = AppLocalizations.of(currentContext!).create_new_mailbox_failure;
var messageError = AppLocalizations.of(currentContext!).createNewFolderFailure;
if (exception is ErrorMethodResponse) {
messageError = exception.description ?? AppLocalizations.of(currentContext!).create_new_mailbox_failure;
messageError = exception.description ?? AppLocalizations.of(currentContext!).createNewFolderFailure;
}
_appToast.showToastErrorMessage(currentOverlayContext!, messageError);
}
@@ -683,7 +683,7 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
if (currentOverlayContext != null && currentContext != null) {
_appToast.showToastSuccessMessage(
currentOverlayContext!,
AppLocalizations.of(currentContext!).delete_mailboxes_successfully);
AppLocalizations.of(currentContext!).deleteFoldersSuccessfully);
}
if (listMailboxIdDeleted.contains(selectedMailbox?.id)) {
@@ -701,7 +701,7 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
_responsiveUtils.isPortraitMobile(context)) {
(ConfirmationDialogActionSheetBuilder(context)
..messageText(AppLocalizations.of(context)
.messageConfirmationDialogDeleteMultipleMailbox(selectedMailboxList.length))
.messageConfirmationDialogDeleteMultipleFolder(selectedMailboxList.length))
..onCancelAction(AppLocalizations.of(context).cancel, () =>
popBack())
..onConfirmAction(AppLocalizations.of(context).delete, () =>
@@ -713,9 +713,9 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
builder: (BuildContext context) => PointerInterceptor(child: (ConfirmDialogBuilder(_imagePaths)
..key(const Key('confirm_dialog_delete_multiple_mailbox'))
..title(AppLocalizations.of(context).delete_mailboxes)
..title(AppLocalizations.of(context).deleteFolders)
..content(AppLocalizations.of(context)
.messageConfirmationDialogDeleteMultipleMailbox(selectedMailboxList.length))
.messageConfirmationDialogDeleteMultipleFolder(selectedMailboxList.length))
..addIcon(SvgPicture.asset(_imagePaths.icRemoveDialog,
fit: BoxFit.fill))
..colorConfirmButton(AppColor.colorConfirmActionDialog)
@@ -767,7 +767,7 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
if (currentOverlayContext != null && currentContext != null) {
_appToast.showToastErrorMessage(
currentOverlayContext!,
AppLocalizations.of(currentContext!).delete_mailboxes_failure,
AppLocalizations.of(currentContext!).deleteFoldersFailure,
leadingSVGIcon: _imagePaths.icDeleteToast
);
}
@@ -813,8 +813,8 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
&& currentContext != null) {
_appToast.showToastMessage(
currentOverlayContext!,
AppLocalizations.of(currentContext!).moved_to_mailbox(
success.destinationMailboxDisplayName ?? AppLocalizations.of(currentContext!).allMailboxes),
AppLocalizations.of(currentContext!).movedToFolder(
success.destinationMailboxDisplayName ?? AppLocalizations.of(currentContext!).allFolders),
actionName: AppLocalizations.of(currentContext!).undo,
onActionClick: () {
_undoMovingMailbox(MoveMailboxRequest(
@@ -1126,7 +1126,7 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
if (currentOverlayContext != null && currentContext != null) {
_appToast.showToastMessage(
currentOverlayContext!,
AppLocalizations.of(currentContext!).toastMsgHideMailboxSuccess,
AppLocalizations.of(currentContext!).toastMsgHideFolderSuccess,
actionName: AppLocalizations.of(currentContext!).undo,
onActionClick: () => _undoUnsubscribeMailboxAction(
mailboxIdSubscribed,
@@ -219,7 +219,7 @@ class MailboxView extends BaseMailboxView {
children: [
Expanded(
child: Text(
AppLocalizations.of(context).mailBoxes,
AppLocalizations.of(context).folders,
style: const TextStyle(
fontSize: 20,
color: Colors.black,
@@ -236,7 +236,7 @@ class MailboxView extends BaseMailboxView {
colorFilter: AppColor.colorTextButton.asFilter(),
fit: BoxFit.fill
),
tooltip: AppLocalizations.of(context).searchForMailboxes,
tooltip: AppLocalizations.of(context).searchForFolders,
onTap: () => controller.openSearchViewAction(context)
),
buildIconWeb(
@@ -248,7 +248,7 @@ class MailboxView extends BaseMailboxView {
imagePaths.icAddNewFolder,
colorFilter: AppColor.colorTextButton.asFilter(),
fit: BoxFit.fill),
tooltip: AppLocalizations.of(context).new_mailbox,
tooltip: AppLocalizations.of(context).newFolder,
onTap: () => controller.goToCreateNewMailboxView(context)),
]),
]),
@@ -170,7 +170,7 @@ class MailboxView extends BaseMailboxView {
imagePaths.icAddNewFolder,
colorFilter: AppColor.colorTextButton.asFilter(),
fit: BoxFit.fill),
tooltip: AppLocalizations.of(context).new_mailbox,
tooltip: AppLocalizations.of(context).newFolder,
onTap: () => controller.goToCreateNewMailboxView(context)),
],
)),
@@ -36,7 +36,7 @@ extension MailboxActionsExtension on MailboxActions {
return AppLocalizations.of(context).moveTo;
case MailboxActions.select:
case MailboxActions.selectForRuleAction:
return AppLocalizations.of(context).selectMailbox;
return AppLocalizations.of(context).selectFolder;
default:
return '';
}
@@ -55,15 +55,15 @@ extension MailboxActionsExtension on MailboxActions {
case MailboxActions.markAsRead:
return AppLocalizations.of(context).mark_as_read;
case MailboxActions.move:
return AppLocalizations.of(context).moveMailbox;
return AppLocalizations.of(context).moveFolder;
case MailboxActions.rename:
return AppLocalizations.of(context).rename_mailbox;
return AppLocalizations.of(context).renameFolder;
case MailboxActions.delete:
return AppLocalizations.of(context).deleteMailbox;
return AppLocalizations.of(context).deleteFolder;
case MailboxActions.disableMailbox:
return AppLocalizations.of(context).hideMailBoxes;
return AppLocalizations.of(context).hideFolder;
case MailboxActions.enableMailbox:
return AppLocalizations.of(context).showMailbox;
return AppLocalizations.of(context).showFolder;
case MailboxActions.emptyTrash:
return AppLocalizations.of(context).emptyTrash;
case MailboxActions.emptySpam:
@@ -12,14 +12,14 @@ extension ValicatorFailureExtension on VerifyNameFailure {
if (actions == MailboxActions.rename) {
return AppLocalizations.of(context).this_field_cannot_be_blank;
}
return AppLocalizations.of(context).name_of_mailbox_is_required;
return AppLocalizations.of(context).nameOfFolderIsRequired;
} else if (exception is DuplicatedNameException) {
if (actions == MailboxActions.rename) {
return AppLocalizations.of(context).there_is_already_folder_with_the_same_name;
}
return AppLocalizations.of(context).this_folder_name_is_already_taken;
} else if (exception is SpecialCharacterException) {
return AppLocalizations.of(context).mailbox_name_cannot_contain_special_characters;
return AppLocalizations.of(context).folderNameCannotContainSpecialCharacters;
} else {
return '';
}
@@ -4,8 +4,8 @@ import 'package:core/presentation/utils/responsive_utils.dart';
import 'package:core/presentation/utils/style_utils.dart';
import 'package:core/presentation/views/text/text_field_builder.dart';
import 'package:core/utils/app_logger.dart';
import 'package:core/utils/platform_info.dart';
import 'package:core/utils/direction_utils.dart';
import 'package:core/utils/platform_info.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:get/get.dart';
@@ -91,7 +91,7 @@ class MailboxCreatorView extends GetWidget<MailboxCreatorController> {
Widget _buildAppBar(BuildContext context) {
return (AppBarMailboxCreatorBuilder(
context,
title: AppLocalizations.of(context).new_mailbox,
title: AppLocalizations.of(context).newFolder,
isValidated: true)
..addOnCancelActionClick(() => controller.closeMailboxCreator(context))
..addOnDoneActionClick(() => controller.createNewMailbox(context)))
@@ -114,7 +114,7 @@ class MailboxCreatorView extends GetWidget<MailboxCreatorController> {
overflow: CommonTextStyle.defaultTextOverFlow),
focusNode: controller.nameInputFocusNode,
decoration: (CreateMailboxNameInputDecorationBuilder()
..setHintText(AppLocalizations.of(context).hint_input_create_new_mailbox)
..setHintText(AppLocalizations.of(context).hintInputCreateNewFolder)
..setErrorText(controller.getErrorInputNameString(context)))
.build(),
))
@@ -154,7 +154,7 @@ class MailboxCreatorView extends GetWidget<MailboxCreatorController> {
fit: BoxFit.fill)),
const SizedBox(width: 12),
Expanded(child: Obx(() => Text(
controller.selectedMailbox.value?.getDisplayName(context) ?? AppLocalizations.of(context).allMailboxes,
controller.selectedMailbox.value?.getDisplayName(context) ?? AppLocalizations.of(context).allFolders,
maxLines: 1,
softWrap: CommonTextStyle.defaultSoftWrap,
overflow: CommonTextStyle.defaultTextOverFlow,
@@ -251,7 +251,7 @@ class AdvancedFilterController extends BaseController {
dateFilterSelectedFormAdvancedSearch.value = searchEmailFilter.emailReceiveTimeType;
_destinationMailboxSelected = searchEmailFilter.mailbox;
if (searchEmailFilter.mailbox == null) {
mailBoxFilterInputController.text = AppLocalizations.of(context).allMailboxes;
mailBoxFilterInputController.text = AppLocalizations.of(context).allFolders;
} else {
mailBoxFilterInputController.text = StringConvert.writeNullToEmpty(searchEmailFilter.mailbox?.getDisplayName(context));
}
@@ -12,6 +12,7 @@ import 'package:jmap_dart_client/jmap/core/capability/capability_identifier.dart
import 'package:jmap_dart_client/jmap/core/capability/mail_capability.dart';
import 'package:jmap_dart_client/jmap/core/error/set_error.dart';
import 'package:jmap_dart_client/jmap/core/session/session.dart';
import 'package:jmap_dart_client/jmap/core/state.dart' as jmap;
import 'package:jmap_dart_client/jmap/core/unsigned_int.dart';
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
@@ -31,20 +32,20 @@ import 'package:tmail_ui_user/features/composer/domain/state/update_email_drafts
import 'package:tmail_ui_user/features/composer/domain/usecases/save_email_as_drafts_interactor.dart';
import 'package:tmail_ui_user/features/composer/domain/usecases/send_email_interactor.dart';
import 'package:tmail_ui_user/features/composer/domain/usecases/update_email_drafts_interactor.dart';
import 'package:tmail_ui_user/features/composer/presentation/model/compose_action_mode.dart';
import 'package:tmail_ui_user/features/composer/presentation/model/save_to_draft_arguments.dart';
import 'package:tmail_ui_user/features/email/domain/model/mark_read_action.dart';
import 'package:tmail_ui_user/features/email/domain/state/delete_sending_email_state.dart';
import 'package:tmail_ui_user/features/email/domain/state/mark_as_email_read_state.dart';
import 'package:tmail_ui_user/features/email/domain/state/store_sending_email_state.dart';
import 'package:tmail_ui_user/features/composer/presentation/composer_bindings.dart';
import 'package:tmail_ui_user/features/composer/presentation/extensions/email_action_type_extension.dart';
import 'package:tmail_ui_user/features/composer/presentation/model/compose_action_mode.dart';
import 'package:tmail_ui_user/features/composer/presentation/model/save_to_draft_arguments.dart';
import 'package:tmail_ui_user/features/destination_picker/presentation/model/destination_picker_arguments.dart';
import 'package:tmail_ui_user/features/email/domain/model/mark_read_action.dart';
import 'package:tmail_ui_user/features/email/domain/model/move_action.dart';
import 'package:tmail_ui_user/features/email/domain/model/move_to_mailbox_request.dart';
import 'package:tmail_ui_user/features/email/domain/state/delete_email_permanently_state.dart';
import 'package:tmail_ui_user/features/email/domain/state/delete_multiple_emails_permanently_state.dart';
import 'package:tmail_ui_user/features/email/domain/state/delete_sending_email_state.dart';
import 'package:tmail_ui_user/features/email/domain/state/mark_as_email_read_state.dart';
import 'package:tmail_ui_user/features/email/domain/state/move_to_mailbox_state.dart';
import 'package:tmail_ui_user/features/email/domain/state/store_sending_email_state.dart';
import 'package:tmail_ui_user/features/email/domain/usecases/delete_email_permanently_interactor.dart';
import 'package:tmail_ui_user/features/email/domain/usecases/delete_multiple_emails_permanently_interactor.dart';
import 'package:tmail_ui_user/features/email/domain/usecases/mark_as_email_read_interactor.dart';
@@ -138,7 +139,6 @@ import 'package:tmail_ui_user/main/routes/navigation_router.dart';
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
import 'package:tmail_ui_user/main/routes/route_utils.dart';
import 'package:tmail_ui_user/main/utils/email_receive_manager.dart';
import 'package:jmap_dart_client/jmap/core/state.dart' as jmap;
import 'package:uuid/uuid.dart';
import 'package:workmanager/workmanager.dart' as work_manager;
@@ -2018,7 +2018,7 @@ class MailboxDashBoardController extends ReloadableController {
} else {
_appToast.showToastWarningMessage(
context,
AppLocalizations.of(context).noEmailInYourCurrentMailbox
AppLocalizations.of(context).noEmailInYourCurrentFolder
);
}
}))
@@ -2045,7 +2045,7 @@ class MailboxDashBoardController extends ReloadableController {
} else {
_appToast.showToastWarningMessage(
context,
AppLocalizations.of(context).noEmailInYourCurrentMailbox
AppLocalizations.of(context).noEmailInYourCurrentFolder
);
}
})
@@ -25,7 +25,7 @@ enum AdvancedSearchFilterField {
case AdvancedSearchFilterField.notKeyword:
return AppLocalizations.of(context).doesNotHave;
case AdvancedSearchFilterField.mailBox:
return AppLocalizations.of(context).mailbox;
return AppLocalizations.of(context).folder;
case AdvancedSearchFilterField.date:
return AppLocalizations.of(context).date;
case AdvancedSearchFilterField.hasAttachment:
@@ -44,7 +44,7 @@ enum AdvancedSearchFilterField {
case AdvancedSearchFilterField.notKeyword:
return AppLocalizations.of(context).enterSomeSuggestions;
case AdvancedSearchFilterField.mailBox:
return AppLocalizations.of(context).allMailboxes;
return AppLocalizations.of(context).allFolders;
case AdvancedSearchFilterField.date:
return AppLocalizations.of(context).allTime;
case AdvancedSearchFilterField.hasAttachment:
@@ -207,7 +207,7 @@ class MailboxVisibilityController extends BaseMailboxController {
if (currentOverlayContext != null && currentContext != null) {
_appToast.showToastMessage(
currentOverlayContext!,
AppLocalizations.of(currentContext!).toastMsgHideMailboxSuccess,
AppLocalizations.of(currentContext!).toastMsgHideFolderSuccess,
actionName: AppLocalizations.of(currentContext!).undo,
onActionClick: () => _subscribeMailboxAction(
SubscribeMailboxRequest(
@@ -17,13 +17,13 @@ class MailboxVisibilityHeaderWidget extends StatelessWidget {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(AppLocalizations.of(context).mailboxVisibility,
Text(AppLocalizations.of(context).folderVisibility,
style: const TextStyle(
fontSize: 20,
fontWeight: FontWeight.bold,
color: Colors.black)),
const SizedBox(height: 4),
Text(AppLocalizations.of(context).mailboxVisibilitySubtitle,
Text(AppLocalizations.of(context).folderVisibilitySubtitle,
style: const TextStyle(
fontSize: 16,
fontWeight: FontWeight.w500,
@@ -106,7 +106,7 @@ class SettingsFirstLevelView extends GetWidget<SettingsController> {
SettingFirstLevelTileBuilder(
AccountMenuItem.mailboxVisibility.getName(context),
AccountMenuItem.mailboxVisibility.getIcon(_imagePaths),
subtitle: AppLocalizations.of(context).mailboxVisibilitySubtitle,
subtitle: AppLocalizations.of(context).folderVisibilitySubtitle,
() => controller.selectSettings(AccountMenuItem.mailboxVisibility)
),
Divider(
@@ -44,7 +44,7 @@ enum AccountMenuItem {
case AccountMenuItem.vacation:
return AppLocalizations.of(context).vacation;
case AccountMenuItem.mailboxVisibility:
return AppLocalizations.of(context).mailboxVisibility;
return AppLocalizations.of(context).folderVisibility;
case AccountMenuItem.none:
return AppLocalizations.of(context).profiles;
}
@@ -197,7 +197,7 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
Padding(
padding: const EdgeInsets.symmetric(horizontal: 12),
child: Text(
AppLocalizations.of(context).toMailbox,
AppLocalizations.of(context).toFolder,
overflow: CommonTextStyle.defaultTextOverFlow,
softWrap: CommonTextStyle.defaultSoftWrap,
maxLines: 1,
@@ -349,7 +349,7 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
alignment: Alignment.centerLeft,
padding: const EdgeInsets.symmetric(horizontal: 12),
child: Text(
AppLocalizations.of(context).toMailbox,
AppLocalizations.of(context).toFolder,
overflow: CommonTextStyle.defaultTextOverFlow,
softWrap: CommonTextStyle.defaultSoftWrap,
maxLines: 1,
@@ -519,7 +519,7 @@ class RuleFilterCreatorView extends GetWidget<RulesFilterCreatorController> {
alignment: Alignment.centerLeft,
padding: const EdgeInsets.symmetric(vertical: 12),
child: Text(
AppLocalizations.of(context).toMailbox,
AppLocalizations.of(context).toFolder,
overflow: CommonTextStyle.defaultTextOverFlow,
softWrap: CommonTextStyle.defaultSoftWrap,
maxLines: 1,
@@ -5,8 +5,8 @@ import 'package:core/presentation/utils/responsive_utils.dart';
import 'package:core/presentation/utils/style_utils.dart';
import 'package:core/presentation/views/button/icon_button_web.dart';
import 'package:core/presentation/views/text/text_field_builder.dart';
import 'package:core/utils/platform_info.dart';
import 'package:core/utils/direction_utils.dart';
import 'package:core/utils/platform_info.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:get/get.dart';
@@ -27,10 +27,10 @@ import 'package:tmail_ui_user/features/search/email/presentation/widgets/email_r
import 'package:tmail_ui_user/features/search/email/presentation/widgets/email_receive_time_cupertino_action_sheet_action_builder.dart';
import 'package:tmail_ui_user/features/thread/domain/state/search_email_state.dart';
import 'package:tmail_ui_user/features/thread/domain/state/search_more_email_state.dart';
import 'package:tmail_ui_user/features/thread/presentation/widgets/empty_emails_widget.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
import 'package:tmail_ui_user/features/thread/presentation/widgets/email_tile_builder.dart'
if (dart.library.html) 'package:tmail_ui_user/features/thread/presentation/widgets/email_tile_web_builder.dart';
import 'package:tmail_ui_user/features/thread/presentation/widgets/empty_emails_widget.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
class SearchEmailView extends GetWidget<SearchEmailController>
with AppLoaderMixin {
@@ -539,7 +539,7 @@ class SearchEmailView extends GetWidget<SearchEmailController>
Text(
filterSelected
? controller.simpleSearchFilter.value.getMailboxName(context)
: AppLocalizations.of(context).mailbox,
: AppLocalizations.of(context).folder,
maxLines: 1,
overflow: CommonTextStyle.defaultTextOverFlow,
softWrap: CommonTextStyle.defaultSoftWrap,
@@ -8,6 +8,7 @@ import 'package:core/presentation/utils/keyboard_utils.dart';
import 'package:core/presentation/utils/responsive_utils.dart';
import 'package:core/utils/app_logger.dart';
import 'package:core/utils/platform_info.dart';
import 'package:debounce_throttle/debounce_throttle.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:get/get.dart';
@@ -15,12 +16,12 @@ import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:jmap_dart_client/jmap/core/error/method/error_method_response.dart';
import 'package:jmap_dart_client/jmap/core/id.dart';
import 'package:jmap_dart_client/jmap/core/session/session.dart';
import 'package:jmap_dart_client/jmap/core/state.dart' as jmap;
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
import 'package:model/email/presentation_email.dart';
import 'package:model/extensions/presentation_email_extension.dart';
import 'package:model/mailbox/presentation_mailbox.dart';
import 'package:tmail_ui_user/features/base/base_mailbox_controller.dart';
import 'package:debounce_throttle/debounce_throttle.dart';
import 'package:tmail_ui_user/features/base/mixin/mailbox_action_handler_mixin.dart';
import 'package:tmail_ui_user/features/email/domain/model/move_action.dart';
import 'package:tmail_ui_user/features/mailbox/domain/model/create_new_mailbox_request.dart';
@@ -66,7 +67,6 @@ import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
import 'package:tmail_ui_user/main/routes/app_routes.dart';
import 'package:tmail_ui_user/main/routes/dialog_router.dart';
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
import 'package:jmap_dart_client/jmap/core/state.dart' as jmap;
import 'package:uuid/uuid.dart';
class SearchMailboxController extends BaseMailboxController with MailboxActionHandlerMixin {
@@ -378,7 +378,7 @@ class SearchMailboxController extends BaseMailboxController with MailboxActionHa
if (success.moveAction == MoveAction.moving && currentOverlayContext != null && currentContext != null) {
_appToast.showToastMessage(
currentOverlayContext!,
AppLocalizations.of(currentContext!).moved_to_mailbox(success.destinationMailboxDisplayName ?? AppLocalizations.of(currentContext!).allMailboxes),
AppLocalizations.of(currentContext!).movedToFolder(success.destinationMailboxDisplayName ?? AppLocalizations.of(currentContext!).allFolders),
actionName: AppLocalizations.of(currentContext!).undo,
onActionClick: () {
_undoMovingMailbox(MoveMailboxRequest(
@@ -437,7 +437,7 @@ class SearchMailboxController extends BaseMailboxController with MailboxActionHa
if (currentOverlayContext != null && currentContext != null) {
_appToast.showToastSuccessMessage(
currentOverlayContext!,
AppLocalizations.of(currentContext!).delete_mailboxes_successfully);
AppLocalizations.of(currentContext!).deleteFoldersSuccessfully);
}
if (listMailboxIdDeleted.contains(dashboardController.selectedMailbox.value?.id)) {
@@ -452,7 +452,7 @@ class SearchMailboxController extends BaseMailboxController with MailboxActionHa
if (currentOverlayContext != null && currentContext != null) {
_appToast.showToastErrorMessage(
currentOverlayContext!,
AppLocalizations.of(currentContext!).delete_mailboxes_failure);
AppLocalizations.of(currentContext!).deleteFoldersFailure);
}
}
@@ -688,9 +688,9 @@ class SearchMailboxController extends BaseMailboxController with MailboxActionHa
void _createNewMailboxFailure(CreateNewMailboxFailure failure) {
if (currentOverlayContext != null && currentContext != null) {
final exception = failure.exception;
var messageError = AppLocalizations.of(currentContext!).create_new_mailbox_failure;
var messageError = AppLocalizations.of(currentContext!).createNewFolderFailure;
if (exception is ErrorMethodResponse) {
messageError = exception.description ?? AppLocalizations.of(currentContext!).create_new_mailbox_failure;
messageError = exception.description ?? AppLocalizations.of(currentContext!).createNewFolderFailure;
}
_appToast.showToastErrorMessage(currentOverlayContext!, messageError);
}
@@ -2,8 +2,8 @@
import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/presentation/views/button/icon_button_web.dart';
import 'package:core/presentation/views/text/text_field_builder.dart';
import 'package:core/utils/platform_info.dart';
import 'package:core/utils/direction_utils.dart';
import 'package:core/utils/platform_info.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:focused_menu_custom/modals.dart';
@@ -154,7 +154,7 @@ class SearchMailboxView extends GetWidget<SearchMailboxController>
onTextSubmitted: (text) => controller.onTextSearchSubmitted(context, text),
decoration: InputDecoration(
contentPadding: EdgeInsets.zero,
hintText: AppLocalizations.of(context).searchForMailboxes,
hintText: AppLocalizations.of(context).searchForFolders,
hintStyle: const TextStyle(
color: AppColor.loginTextFieldHintColor,
fontSize: 15,
@@ -42,7 +42,7 @@ class AppBarSendingQueueWidget extends StatelessWidget {
icon: _imagePaths.icMenuMailbox,
backgroundColor: Colors.transparent,
iconColor: AppBarSendingQueueWidgetStyle.iconColor,
tooltipMessage: AppLocalizations.of(context).openMailboxMenu,
tooltipMessage: AppLocalizations.of(context).openFolderMenu,
onTapActionCallback: onOpenMailboxMenu
)
else
@@ -44,7 +44,7 @@ class DefaultWebAppBarThreadWidget extends StatelessWidget {
backgroundColor: Colors.transparent,
padding: DefaultWebAppBarThreadWidgetStyle.mailboxMenuPadding,
maxWidth: DefaultWebAppBarThreadWidgetStyle.buttonMaxWidth,
tooltipMessage: AppLocalizations.of(context).openMailboxMenu,
tooltipMessage: AppLocalizations.of(context).openFolderMenu,
onTapActionCallback: openMailboxAction,
),
Expanded(