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:
@@ -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(
|
||||
|
||||
@@ -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 {}
|
||||
+69
-37
@@ -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,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+24
-24
@@ -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,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user