TF-1831 Handle system back button in dialog view

Signed-off-by: dab246 <tdvu@linagora.com>
(cherry picked from commit dc93aa9961987315bd1b478aecda530049b75f02)
This commit is contained in:
dab246
2023-12-10 02:53:23 +07:00
committed by Dat H. Pham
parent 9e5e6af9ce
commit fbb43e3bb0
15 changed files with 286 additions and 254 deletions
@@ -30,8 +30,8 @@ class CupertinoActionSheetBuilder {
_actionTiles.addAll(tiles);
}
void show() {
showCupertinoModalPopup(
Future<dynamic> show() {
return showCupertinoModalPopup(
context: _context,
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
builder: (context) => PointerInterceptor(child: CupertinoActionSheet(
+31 -34
View File
@@ -338,36 +338,34 @@ abstract class BaseMailboxController extends BaseController {
)))
).show(context);
} else {
showDialog(
context: context,
Get.dialog(
PointerInterceptor(child: (EditTextDialogBuilder()
..key(const Key('rename_mailbox_dialog'))
..title(AppLocalizations.of(context).renameFolder)
..cancelText(AppLocalizations.of(context).cancel)
..setErrorString((value) {
return verifyMailboxNameAction(
context,
value,
listMailboxName,
MailboxActions.rename
);
})
..setTextController(TextEditingController.fromValue(
TextEditingValue(
text: presentationMailbox.name?.name ?? '',
selection: TextSelection(
baseOffset: 0,
extentOffset: presentationMailbox.name?.name.length ?? 0
)
))
)
..onConfirmButtonAction(
AppLocalizations.of(context).rename,
(value) => onRenameMailboxAction(presentationMailbox, MailboxName(value))
)
).build()),
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
builder: (context) =>
PointerInterceptor(child: (EditTextDialogBuilder()
..key(const Key('rename_mailbox_dialog'))
..title(AppLocalizations.of(context).renameFolder)
..cancelText(AppLocalizations.of(context).cancel)
..setErrorString((value) {
return verifyMailboxNameAction(
context,
value,
listMailboxName,
MailboxActions.rename
);
})
..setTextController(TextEditingController.fromValue(
TextEditingValue(
text: presentationMailbox.name?.name ?? '',
selection: TextSelection(
baseOffset: 0,
extentOffset: presentationMailbox.name?.name.length ?? 0
)
))
)
..onConfirmButtonAction(
AppLocalizations.of(context).rename,
(value) => onRenameMailboxAction(presentationMailbox, MailboxName(value))
)
).build())
);
}
}
@@ -418,10 +416,8 @@ abstract class BaseMailboxController extends BaseController {
..onConfirmAction(AppLocalizations.of(context).delete, () => onDeleteMailboxAction(presentationMailbox))
).show();
} else {
showDialog(
context: context,
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
builder: (context) => PointerInterceptor(
Get.dialog(
PointerInterceptor(
child: (ConfirmDialogBuilder(imagePaths)
..key(const Key('confirm_dialog_delete_mailbox'))
..title(AppLocalizations.of(context).deleteFolders)
@@ -436,7 +432,8 @@ abstract class BaseMailboxController extends BaseController {
..onCloseButtonAction(() => popBack())
..onConfirmButtonAction(AppLocalizations.of(context).delete, () => onDeleteMailboxAction(presentationMailbox))
..onCancelButtonAction(AppLocalizations.of(context).cancel, () => popBack())
).build())
).build()),
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
);
}
}
@@ -74,33 +74,34 @@ mixin MailboxActionHandlerMixin {
}))
.show();
} else {
showDialog(
context: context,
Get.dialog(
PointerInterceptor(child: (ConfirmDialogBuilder(imagePaths)
..key(const Key('confirm_dialog_empty_trash'))
..title(AppLocalizations.of(context).emptyTrash)
..content(AppLocalizations.of(context).emptyTrashMessageDialog)
..addIcon(SvgPicture.asset(imagePaths.icRemoveDialog, fit: BoxFit.fill))
..colorConfirmButton(AppColor.colorConfirmActionDialog)
..styleTextConfirmButton(const TextStyle(
fontSize: 17,
fontWeight: FontWeight.w500,
color: AppColor.colorActionDeleteConfirmDialog))
..onCloseButtonAction(popBack)
..onConfirmButtonAction(AppLocalizations.of(context).delete, () {
popBack();
if (mailbox.countTotalEmails > 0) {
dashboardController.emptyTrashFolderAction(trashFolderId: mailbox.id);
} else {
appToast.showToastWarningMessage(
context,
AppLocalizations.of(context).noEmailInYourCurrentFolder
);
}
})
..onCancelButtonAction(AppLocalizations.of(context).cancel, popBack))
.build()
),
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
builder: (context) => PointerInterceptor(child: (ConfirmDialogBuilder(imagePaths)
..key(const Key('confirm_dialog_empty_trash'))
..title(AppLocalizations.of(context).emptyTrash)
..content(AppLocalizations.of(context).emptyTrashMessageDialog)
..addIcon(SvgPicture.asset(imagePaths.icRemoveDialog, fit: BoxFit.fill))
..colorConfirmButton(AppColor.colorConfirmActionDialog)
..styleTextConfirmButton(const TextStyle(
fontSize: 17,
fontWeight: FontWeight.w500,
color: AppColor.colorActionDeleteConfirmDialog))
..onCloseButtonAction(popBack)
..onConfirmButtonAction(AppLocalizations.of(context).delete, () {
popBack();
if (mailbox.countTotalEmails > 0) {
dashboardController.emptyTrashFolderAction(trashFolderId: mailbox.id);
} else {
appToast.showToastWarningMessage(
context,
AppLocalizations.of(context).noEmailInYourCurrentFolder
);
}
})
..onCancelButtonAction(AppLocalizations.of(context).cancel, popBack))
.build()));
);
}
}
@@ -134,10 +135,8 @@ mixin MailboxActionHandlerMixin {
}))
.show();
} else {
showDialog(
context: context,
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
builder: (context) => PointerInterceptor(child: (ConfirmDialogBuilder(imagePaths)
Get.dialog(
PointerInterceptor(child: (ConfirmDialogBuilder(imagePaths)
..key(const Key('confirm_dialog_empty_spam'))
..title(AppLocalizations.of(context).emptySpamFolder)
..content(AppLocalizations.of(context).emptySpamMessageDialog)
@@ -160,7 +159,9 @@ mixin MailboxActionHandlerMixin {
}
})
..onCancelButtonAction(AppLocalizations.of(context).cancel, popBack)
).build()));
).build()),
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
);
}
}
}
@@ -34,10 +34,8 @@ mixin MessageDialogActionMixin {
final imagePaths = Get.find<ImagePaths>();
if (alignCenter) {
return await showDialog(
context: context,
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
builder: (BuildContext context) => PointerInterceptor(
return await Get.dialog(
PointerInterceptor(
child: (ConfirmDialogBuilder(imagePaths, listTextSpan: listTextSpan, heightButton: 44)
..key(const Key('confirm_dialog_action'))
..title(title ?? '')
@@ -66,18 +64,14 @@ mixin MessageDialogActionMixin {
}
)
).build()
)
),
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
);
} else {
if (responsiveUtils.isMobile(context)) {
if (showAsBottomSheet) {
return await showModalBottomSheet(
context: context,
isScrollControlled: true,
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
backgroundColor: Colors.transparent,
enableDrag: true,
builder: (BuildContext context) => PointerInterceptor(
return await Get.bottomSheet(
PointerInterceptor(
child: (ConfirmDialogBuilder(imagePaths, showAsBottomSheet: true, listTextSpan: listTextSpan)
..key(const Key('confirm_dialog_action'))
..title(title ?? '')
@@ -108,7 +102,13 @@ mixin MessageDialogActionMixin {
}
)
..onCloseButtonAction(() => popBack()))
.build()));
.build()
),
isScrollControlled: true,
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
backgroundColor: Colors.transparent,
enableDrag: true,
);
} else {
return (ConfirmationDialogActionSheetBuilder(context, listTextSpan: listTextSpan)
..messageText(message)
@@ -128,10 +128,8 @@ mixin MessageDialogActionMixin {
})).show();
}
} else {
return await showDialog(
context: context,
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
builder: (BuildContext context) => PointerInterceptor(
return await Get.dialog(
PointerInterceptor(
child: (ConfirmDialogBuilder(imagePaths, listTextSpan: listTextSpan)
..key(const Key('confirm_dialog_action'))
..title(title ?? '')
@@ -161,7 +159,8 @@ mixin MessageDialogActionMixin {
)
..onCloseButtonAction(() => popBack()))
.build()
)
),
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
);
}
}
@@ -9,8 +9,8 @@ import 'package:tmail_ui_user/main/routes/route_navigation.dart';
mixin PopupContextMenuActionMixin {
void openContextMenuAction(BuildContext context, List<Widget> actionTiles, {Widget? cancelButton}) {
(CupertinoActionSheetBuilder(context)
void openContextMenuAction(BuildContext context, List<Widget> actionTiles, {Widget? cancelButton}) async {
await (CupertinoActionSheetBuilder(context)
..addTiles(actionTiles)
..addCancelButton(cancelButton ?? buildCancelButton(context)))
.show();
@@ -22,6 +22,4 @@ class RefreshChangeEmailAction extends EmailUIAction {
class CloseEmailDetailedViewToRedirectToTheInboxAction extends EmailUIAction {}
class CloseEmailDetailedViewAction extends EmailUIAction {}
class CloseSearchEmailViewAction extends EmailUIAction {}
class CloseEmailDetailedViewAction extends EmailUIAction {}
@@ -1017,10 +1017,8 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
..addOnQuickCreatingRuleEmailBottomSheetAction((emailAddress) => quickCreatingRule(context, emailAddress))
).show();
} else {
showDialog(
context: context,
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
builder: (BuildContext context) => PointerInterceptor(
Get.dialog(
PointerInterceptor(
child: EmailAddressDialogBuilder(
emailAddress,
onCloseDialogAction: () => popBack(),
@@ -1028,7 +1026,8 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
onComposeEmailAction: (emailAddress) => composeEmailFromEmailAddress(emailAddress),
onQuickCreatingRuleEmailDialogAction: (emailAddress) => quickCreatingRule(context, emailAddress)
)
)
),
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
);
}
}
@@ -1061,20 +1060,21 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
..onConfirmAction(DeleteActionType.single.getConfirmActionName(context), () => _deleteEmailPermanentlyAction(context, email)))
.show();
} else {
showDialog(
context: context,
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
builder: (BuildContext context) => PointerInterceptor(child: (ConfirmDialogBuilder(imagePaths)
..key(const Key('confirm_dialog_delete_email_permanently'))
..title(DeleteActionType.single.getTitleDialog(context))
..content(DeleteActionType.single.getContentDialog(context))
..addIcon(SvgPicture.asset(imagePaths.icRemoveDialog, fit: BoxFit.fill))
..colorConfirmButton(AppColor.colorConfirmActionDialog)
..styleTextConfirmButton(const TextStyle(fontSize: 17, fontWeight: FontWeight.w500, color: AppColor.colorActionDeleteConfirmDialog))
..onCloseButtonAction(() => popBack())
..onConfirmButtonAction(DeleteActionType.single.getConfirmActionName(context), () => _deleteEmailPermanentlyAction(context, email))
..onCancelButtonAction(AppLocalizations.of(context).cancel, () => popBack()))
.build()));
Get.dialog(
PointerInterceptor(child: (ConfirmDialogBuilder(imagePaths)
..key(const Key('confirm_dialog_delete_email_permanently'))
..title(DeleteActionType.single.getTitleDialog(context))
..content(DeleteActionType.single.getContentDialog(context))
..addIcon(SvgPicture.asset(imagePaths.icRemoveDialog, fit: BoxFit.fill))
..colorConfirmButton(AppColor.colorConfirmActionDialog)
..styleTextConfirmButton(const TextStyle(fontSize: 17, fontWeight: FontWeight.w500, color: AppColor.colorActionDeleteConfirmDialog))
..onCloseButtonAction(() => popBack())
..onConfirmButtonAction(DeleteActionType.single.getConfirmActionName(context), () => _deleteEmailPermanentlyAction(context, email))
..onCancelButtonAction(AppLocalizations.of(context).cancel, () => popBack()))
.build()
),
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
);
}
}
@@ -1388,27 +1388,25 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
})
).show();
} else {
showDialog(
context: context,
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
builder: (BuildContext context) =>
PointerInterceptor(
child: AttachmentListDialogBuilder(
imagePaths: imagePaths,
attachments: attachments,
responsiveUtils: responsiveUtils,
scrollController: _attachmentListScrollController,
backgroundColor: Colors.black.withAlpha(24),
onCloseButtonAction: () => popBack(),
onDownloadAttachmentFileAction: (attachment) {
if (PlatformInfo.isWeb) {
downloadAttachmentForWeb(context, attachment);
} else {
exportAttachment(context, attachment);
}
Get.dialog(
PointerInterceptor(
child: AttachmentListDialogBuilder(
imagePaths: imagePaths,
attachments: attachments,
responsiveUtils: responsiveUtils,
scrollController: _attachmentListScrollController,
backgroundColor: Colors.black.withAlpha(24),
onCloseButtonAction: () => popBack(),
onDownloadAttachmentFileAction: (attachment) {
if (PlatformInfo.isWeb) {
downloadAttachmentForWeb(context, attachment);
} else {
exportAttachment(context, attachment);
}
)
}
)
),
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
);
}
}
@@ -787,27 +787,26 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
_deleteMultipleMailboxAction(selectedMailboxList)))
.show();
} else {
showDialog(
context: context,
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
builder: (BuildContext context) => PointerInterceptor(child: (ConfirmDialogBuilder(imagePaths)
..key(const Key('confirm_dialog_delete_multiple_mailbox'))
..title(AppLocalizations.of(context).deleteFolders)
..content(AppLocalizations.of(context)
.messageConfirmationDialogDeleteMultipleFolder(selectedMailboxList.length))
..addIcon(SvgPicture.asset(imagePaths.icRemoveDialog,
fit: BoxFit.fill))
..colorConfirmButton(AppColor.colorConfirmActionDialog)
..styleTextConfirmButton(const TextStyle(
fontSize: 17,
fontWeight: FontWeight.w500,
color: AppColor.colorActionDeleteConfirmDialog))
..onCloseButtonAction(() => popBack())
..onConfirmButtonAction(AppLocalizations.of(context).delete, () =>
_deleteMultipleMailboxAction(selectedMailboxList))
..onCancelButtonAction(AppLocalizations.of(context).cancel, () =>
popBack()))
.build()));
Get.dialog(
PointerInterceptor(child: (ConfirmDialogBuilder(imagePaths)
..key(const Key('confirm_dialog_delete_multiple_mailbox'))
..title(AppLocalizations.of(context).deleteFolders)
..content(AppLocalizations.of(context).messageConfirmationDialogDeleteMultipleFolder(selectedMailboxList.length))
..addIcon(SvgPicture.asset(imagePaths.icRemoveDialog, fit: BoxFit.fill))
..colorConfirmButton(AppColor.colorConfirmActionDialog)
..styleTextConfirmButton(const TextStyle(
fontSize: 17,
fontWeight: FontWeight.w500,
color: AppColor.colorActionDeleteConfirmDialog))
..onCloseButtonAction(() => popBack())
..onConfirmButtonAction(AppLocalizations.of(context).delete, () =>
_deleteMultipleMailboxAction(selectedMailboxList))
..onCancelButtonAction(AppLocalizations.of(context).cancel, () =>
popBack()))
.build()
),
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
);
}
}
@@ -160,3 +160,7 @@ class SearchEmailByFromFieldsAction extends DashBoardAction {
@override
List<Object?> get props => [emailAddress];
}
class CloseSearchEmailViewAction extends DashBoardAction {}
class CancelSelectionSearchEmailAction extends DashBoardAction {}
@@ -1139,31 +1139,32 @@ class MailboxDashBoardController extends ReloadableController {
onCancelSelectionEmail: onCancelSelectionEmail)))
.show();
} else {
showDialog(
context: context,
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
builder: (BuildContext context) => PointerInterceptor(child: (ConfirmDialogBuilder(imagePaths)
..key(const Key('confirm_dialog_delete_emails_permanently'))
..title(actionType.getTitleDialog(context))
..content(actionType.getContentDialog(
context,
count: listEmails?.length,
mailboxName: mailboxCurrent?.getDisplayName(context)))
..addIcon(SvgPicture.asset(imagePaths.icRemoveDialog, fit: BoxFit.fill))
..colorConfirmButton(AppColor.colorConfirmActionDialog)
..styleTextConfirmButton(const TextStyle(
fontSize: 17,
fontWeight: FontWeight.w500,
color: AppColor.colorActionDeleteConfirmDialog))
..onCloseButtonAction(() => popBack())
..onConfirmButtonAction(
actionType.getConfirmActionName(context),
() => _deleteSelectionEmailsPermanentlyAction(
actionType,
listEmails: listEmails,
onCancelSelectionEmail: onCancelSelectionEmail))
..onCancelButtonAction(AppLocalizations.of(context).cancel, () => popBack()))
.build()));
Get.dialog(
PointerInterceptor(child: (ConfirmDialogBuilder(imagePaths)
..key(const Key('confirm_dialog_delete_emails_permanently'))
..title(actionType.getTitleDialog(context))
..content(actionType.getContentDialog(
context,
count: listEmails?.length,
mailboxName: mailboxCurrent?.getDisplayName(context)))
..addIcon(SvgPicture.asset(imagePaths.icRemoveDialog, fit: BoxFit.fill))
..colorConfirmButton(AppColor.colorConfirmActionDialog)
..styleTextConfirmButton(const TextStyle(
fontSize: 17,
fontWeight: FontWeight.w500,
color: AppColor.colorActionDeleteConfirmDialog))
..onCloseButtonAction(() => popBack())
..onConfirmButtonAction(
actionType.getConfirmActionName(context),
() => _deleteSelectionEmailsPermanentlyAction(
actionType,
listEmails: listEmails,
onCancelSelectionEmail: onCancelSelectionEmail))
..onCancelButtonAction(AppLocalizations.of(context).cancel, () => popBack()))
.build()
),
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
);
}
}
@@ -2046,10 +2047,8 @@ class MailboxDashBoardController extends ReloadableController {
}))
.show();
} else {
showDialog(
context: context,
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
builder: (context) => PointerInterceptor(child: (ConfirmDialogBuilder(imagePaths)
Get.dialog(
PointerInterceptor(child: (ConfirmDialogBuilder(imagePaths)
..key(const Key('confirm_dialog_empty_spam'))
..title(AppLocalizations.of(context).emptySpamFolder)
..content(AppLocalizations.of(context).emptySpamMessageDialog)
@@ -2072,7 +2071,8 @@ class MailboxDashBoardController extends ReloadableController {
}
})
..onCancelButtonAction(AppLocalizations.of(context).cancel, popBack)
).build())
).build()),
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
);
}
}
@@ -2270,11 +2270,25 @@ class MailboxDashBoardController extends ReloadableController {
log('MailboxDashBoardController::_navigateToScreen: dashboardRoute: $dashboardRoute');
switch(dashboardRoute.value) {
case DashboardRoutes.emailDetailed:
dispatchEmailUIAction(CloseEmailDetailedViewAction());
return true;
if (PlatformInfo.isMobile) {
if (currentContext != null && canBack(currentContext!)) {
return false;
} else {
dispatchEmailUIAction(CloseEmailDetailedViewAction());
return true;
}
} else {
dispatchEmailUIAction(CloseEmailDetailedViewAction());
return true;
}
case DashboardRoutes.thread:
if (PlatformInfo.isMobile) {
if (selectedMailbox.value?.isInbox == true) {
if (currentContext != null && canBack(currentContext!)) {
return false;
} else if (isSelectionEnabled()) {
dispatchAction(CancelSelectionAllEmailAction());
return true;
} else if (selectedMailbox.value?.isInbox == true) {
return false;
} else {
openDefaultMailbox();
@@ -2283,10 +2297,16 @@ class MailboxDashBoardController extends ReloadableController {
}
if (searchController.isSearchEmailRunning) {
dispatchMailboxUIAction(SystemBackToInboxAction());
return true;
} else {
pushAndPopAll(AppRoutes.home);
if (selectedMailbox.value?.isInbox == true) {
pushAndPopAll(AppRoutes.home);
return true;
} else {
openDefaultMailbox();
return true;
}
}
return true;
case DashboardRoutes.sendingQueue:
if (PlatformInfo.isMobile) {
openDefaultMailbox();
@@ -2294,8 +2314,20 @@ class MailboxDashBoardController extends ReloadableController {
}
return false;
case DashboardRoutes.searchEmail:
dispatchAction(CloseSearchEmailViewAction());
return true;
if (PlatformInfo.isMobile) {
if (currentContext != null && canBack(currentContext!)) {
return false;
} else if (listResultSearch.any((email) => email.selectMode == SelectMode.ACTIVE)) {
dispatchAction(CancelSelectionSearchEmailAction());
return true;
} else {
dispatchAction(CloseSearchEmailViewAction());
return true;
}
} else {
dispatchAction(CloseSearchEmailViewAction());
return true;
}
default:
return false;
}
@@ -11,15 +11,15 @@ import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:pointer_interceptor/pointer_interceptor.dart';
import 'package:rule_filter/rule_filter/tmail_rule.dart';
import 'package:tmail_ui_user/features/base/base_controller.dart';
import 'package:tmail_ui_user/features/manage_account/domain/model/create_new_email_rule_filter_request.dart';
import 'package:tmail_ui_user/features/manage_account/domain/model/delete_email_rule_request.dart';
import 'package:tmail_ui_user/features/manage_account/domain/model/edit_email_rule_filter_request.dart';
import 'package:tmail_ui_user/features/manage_account/domain/state/delete_email_rule_state.dart';
import 'package:tmail_ui_user/features/manage_account/domain/model/create_new_email_rule_filter_request.dart';
import 'package:tmail_ui_user/features/manage_account/domain/state/create_new_rule_filter_state.dart';
import 'package:tmail_ui_user/features/manage_account/domain/state/delete_email_rule_state.dart';
import 'package:tmail_ui_user/features/manage_account/domain/state/edit_email_rule_filter_state.dart';
import 'package:tmail_ui_user/features/manage_account/domain/state/get_all_rules_state.dart';
import 'package:tmail_ui_user/features/manage_account/domain/usecases/delete_email_rule_interactor.dart';
import 'package:tmail_ui_user/features/manage_account/domain/usecases/create_new_email_rule_filter_interactor.dart';
import 'package:tmail_ui_user/features/manage_account/domain/usecases/delete_email_rule_interactor.dart';
import 'package:tmail_ui_user/features/manage_account/domain/usecases/edit_email_rule_filter_interactor.dart';
import 'package:tmail_ui_user/features/manage_account/domain/usecases/get_all_rules_interactor.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/email_rules/widgets/email_rule_bottom_sheet_action_tile_builder.dart';
@@ -27,9 +27,9 @@ import 'package:tmail_ui_user/features/manage_account/presentation/manage_accoun
import 'package:tmail_ui_user/features/rules_filter_creator/presentation/model/creator_action_type.dart';
import 'package:tmail_ui_user/features/rules_filter_creator/presentation/model/rules_filter_creator_arguments.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:tmail_ui_user/main/routes/app_routes.dart';
class EmailRulesController extends BaseController {
@@ -166,28 +166,29 @@ class EmailRulesController extends BaseController {
}))
.show();
} else {
showDialog(
context: context,
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
builder: (BuildContext context) =>
PointerInterceptor(child: (ConfirmDialogBuilder(imagePaths)
..title(AppLocalizations.of(context).deleteEmailRule)
..content(AppLocalizations.of(context).messageConfirmationDialogDeleteEmailRule(emailRule.name))
..addIcon(SvgPicture.asset(imagePaths.icRemoveDialog,
fit: BoxFit.fill))
..marginIcon(EdgeInsets.zero)
..colorConfirmButton(AppColor.colorConfirmActionDialog)
..styleTextConfirmButton(const TextStyle(
fontSize: 17,
fontWeight: FontWeight.w500,
color: AppColor.colorActionDeleteConfirmDialog))
..onCloseButtonAction(() => popBack())
..onConfirmButtonAction(AppLocalizations.of(context).delete, () {
_handleDeleteEmailRuleAction(emailRule);
})
..onCancelButtonAction(AppLocalizations.of(context).cancel, () =>
popBack()))
.build()));
Get.dialog(
PointerInterceptor(
child: (ConfirmDialogBuilder(imagePaths)
..title(AppLocalizations.of(context).deleteEmailRule)
..content(AppLocalizations.of(context).messageConfirmationDialogDeleteEmailRule(emailRule.name))
..addIcon(SvgPicture.asset(imagePaths.icRemoveDialog,
fit: BoxFit.fill))
..marginIcon(EdgeInsets.zero)
..colorConfirmButton(AppColor.colorConfirmActionDialog)
..styleTextConfirmButton(const TextStyle(
fontSize: 17,
fontWeight: FontWeight.w500,
color: AppColor.colorActionDeleteConfirmDialog))
..onCloseButtonAction(() => popBack())
..onConfirmButtonAction(AppLocalizations.of(context).delete, () {
_handleDeleteEmailRuleAction(emailRule);
})
..onCancelButtonAction(AppLocalizations.of(context).cancel, () =>
popBack()))
.build()
),
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
);
}
}
@@ -192,14 +192,14 @@ class IdentitiesController extends BaseController {
}
void openConfirmationDialogDeleteIdentityAction(BuildContext context, Identity identity) {
showDialog(
context: context,
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
builder: (BuildContext context) => DeleteIdentityDialogBuilder(
Get.dialog(
DeleteIdentityDialogBuilder(
responsiveUtils: responsiveUtils,
imagePaths: imagePaths,
onDeleteIdentityAction: () => _deleteIdentityAction(identity),
));
),
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
);
}
void _deleteIdentityAction(Identity identity) {
@@ -225,25 +225,25 @@ class IdentitiesController extends BaseController {
void _deleteIdentityFailure(DeleteIdentityFailure failure) {
if (currentContext != null) {
showDialog(
context: currentContext!,
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
builder: (BuildContext context) => (ConfirmDialogBuilder(imagePaths)
..key(const Key('dialog_message_delete_identity_failed'))
..title(AppLocalizations.of(context).delete_failed)
..addIcon(SvgPicture.asset(imagePaths.icDeleteDialogFailed, fit: BoxFit.fill))
..marginIcon(EdgeInsets.zero)
..styleTitle(const TextStyle(fontSize: 20,
fontWeight: FontWeight.bold,
color: Colors.black))
..colorConfirmButton(AppColor.colorTextButton)
..paddingTitle(const EdgeInsets.symmetric(vertical: 12))
..styleTextConfirmButton(const TextStyle(fontSize: 17,
fontWeight: FontWeight.w500,
color: Colors.white))
..onCloseButtonAction(() => popBack())
..onConfirmButtonAction('${AppLocalizations.of(context).got_it}!', () => popBack()))
.build());
Get.dialog(
(ConfirmDialogBuilder(imagePaths)
..key(const Key('dialog_message_delete_identity_failed'))
..title(AppLocalizations.of(currentContext!).delete_failed)
..addIcon(SvgPicture.asset(imagePaths.icDeleteDialogFailed, fit: BoxFit.fill))
..marginIcon(EdgeInsets.zero)
..styleTitle(const TextStyle(fontSize: 20,
fontWeight: FontWeight.bold,
color: Colors.black))
..colorConfirmButton(AppColor.colorTextButton)
..paddingTitle(const EdgeInsets.symmetric(vertical: 12))
..styleTextConfirmButton(const TextStyle(fontSize: 17,
fontWeight: FontWeight.w500,
color: Colors.white))
..onCloseButtonAction(() => popBack())
..onConfirmButtonAction('${AppLocalizations.of(currentContext!).got_it}!', () => popBack()))
.build(),
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
);
}
}
@@ -36,7 +36,6 @@ import 'package:tmail_ui_user/features/email/domain/state/mark_as_email_read_sta
import 'package:tmail_ui_user/features/email/domain/state/mark_as_email_star_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/unsubscribe_email_state.dart';
import 'package:tmail_ui_user/features/email/presentation/action/email_ui_action.dart';
import 'package:tmail_ui_user/features/email/presentation/utils/email_utils.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_actions.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/model/recent_search.dart';
@@ -45,6 +44,7 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/quick_sear
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/get_all_recent_search_latest_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/quick_search_email_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/usecases/save_recent_search_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/action/dashboard_action.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/dashboard_routes.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/email_receive_time_type.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/email_sort_order_type.dart';
@@ -227,6 +227,9 @@ class SearchEmailController extends BaseController
if (action is CloseSearchEmailViewAction) {
closeSearchView(context: currentContext);
mailboxDashBoardController.clearDashBoardAction();
} else if (action is CancelSelectionSearchEmailAction) {
cancelSelectionMode();
mailboxDashBoardController.clearDashBoardAction();
}
}
);
@@ -305,7 +308,7 @@ class SearchEmailController extends BaseController
if (session != null && accountId != null) {
canSearchMore = true;
searchIsRunning.value = true;
cancelSelectionMode(context);
cancelSelectionMode();
if (PlatformInfo.isWeb) {
RouteUtils.replaceBrowserHistory(
title: 'SearchEmail',
@@ -769,7 +772,7 @@ class SearchEmailController extends BaseController
}
}
void cancelSelectionMode(BuildContext context) {
void cancelSelectionMode() {
listResultSearch.value = listResultSearch
.map((email) => email.toSelectedEmail(selectMode: SelectMode.INACTIVE))
.toList();
@@ -783,31 +786,31 @@ class SearchEmailController extends BaseController
) {
switch(actionType) {
case EmailActionType.markAsRead:
cancelSelectionMode(context);
cancelSelectionMode();
markAsReadSelectedMultipleEmail(listEmails, ReadActions.markAsRead);
break;
case EmailActionType.markAsUnread:
cancelSelectionMode(context);
cancelSelectionMode();
markAsReadSelectedMultipleEmail(listEmails, ReadActions.markAsUnread);
break;
case EmailActionType.markAsStarred:
cancelSelectionMode(context);
cancelSelectionMode();
markAsStarSelectedMultipleEmail(listEmails, MarkStarAction.markStar);
break;
case EmailActionType.unMarkAsStarred:
cancelSelectionMode(context);
cancelSelectionMode();
markAsStarSelectedMultipleEmail(listEmails, MarkStarAction.unMarkStar);
break;
case EmailActionType.moveToMailbox:
cancelSelectionMode(context);
cancelSelectionMode();
final mailboxContainCurrent = listEmails.getCurrentMailboxContain(mailboxDashBoardController.mapMailboxById);
if (mailboxContainCurrent != null) {
moveSelectedMultipleEmailToMailbox(context, listEmails, mailboxContainCurrent);
}
break;
case EmailActionType.moveToTrash:
cancelSelectionMode(context);
cancelSelectionMode();
final mailboxContainCurrent = listEmails.getCurrentMailboxContain(mailboxDashBoardController.mapMailboxById);
if (mailboxContainCurrent != null) {
moveSelectedMultipleEmailToTrash(listEmails, mailboxContainCurrent);
@@ -821,18 +824,18 @@ class SearchEmailController extends BaseController
DeleteActionType.multiple,
listEmails: listEmails,
mailboxCurrent: mailboxContainCurrent,
onCancelSelectionEmail: () => cancelSelectionMode(context));
onCancelSelectionEmail: () => cancelSelectionMode());
}
break;
case EmailActionType.moveToSpam:
cancelSelectionMode(context);
cancelSelectionMode();
final mailboxContainCurrent = listEmails.getCurrentMailboxContain(mailboxDashBoardController.mapMailboxById);
if (mailboxContainCurrent != null) {
moveSelectedMultipleEmailToSpam(listEmails, mailboxContainCurrent);
}
break;
case EmailActionType.unSpam:
cancelSelectionMode(context);
cancelSelectionMode();
unSpamSelectedMultipleEmail(listEmails);
break;
default:
@@ -62,7 +62,7 @@ class SearchEmailView extends GetWidget<SearchEmailController>
return AppBarSelectionMode(
controller.listResultSearch.listEmailSelected,
controller.mailboxDashBoardController.mapMailboxById,
onCancelSelection: () => controller.cancelSelectionMode(context),
onCancelSelection: controller.cancelSelectionMode,
onHandleEmailAction: (actionType, listEmails) =>
controller.handleSelectionEmailAction(context, actionType, listEmails));
} else {
@@ -198,10 +198,8 @@ mixin EmailActionController {
() => _deleteEmailPermanentlyAction(context, email)))
.show();
} else {
showDialog(
context: context,
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
builder: (BuildContext context) => PointerInterceptor(child: (ConfirmDialogBuilder(imagePaths)
Get.dialog(
PointerInterceptor(child: (ConfirmDialogBuilder(imagePaths)
..key(const Key('confirm_dialog_delete_email_permanently'))
..title(DeleteActionType.single.getTitleDialog(context))
..content(DeleteActionType.single.getContentDialog(context))
@@ -219,7 +217,9 @@ mixin EmailActionController {
..onCancelButtonAction(
AppLocalizations.of(context).cancel,
() => popBack()))
.build()));
.build()),
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
);
}
}