TF-3953 Close several modals when click outside

This commit is contained in:
DatDang
2025-08-07 14:14:50 +07:00
committed by Dat H. Pham
parent 44c17bc762
commit 9e7298bc76
34 changed files with 575 additions and 580 deletions
@@ -1,15 +1,12 @@
import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/presentation/resources/image_paths.dart';
import 'package:core/presentation/utils/app_toast.dart';
import 'package:core/presentation/utils/responsive_utils.dart';
import 'package:core/presentation/views/bottom_popup/confirmation_dialog_action_sheet_builder.dart';
import 'package:core/presentation/views/dialog/confirmation_dialog_builder.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:model/extensions/presentation_mailbox_extension.dart';
import 'package:model/mailbox/presentation_mailbox.dart';
import 'package:pointer_interceptor/pointer_interceptor.dart';
import 'package:tmail_ui_user/features/base/mixin/message_dialog_action_manager.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/extensions/presentation_mailbox_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';
@@ -53,7 +50,6 @@ mixin MailboxActionHandlerMixin {
MailboxDashBoardController dashboardController
) {
final responsiveUtils = Get.find<ResponsiveUtils>();
final imagePaths = Get.find<ImagePaths>();
final appToast = Get.find<AppToast>();
if (responsiveUtils.isScreenWithShortestSide(context)) {
@@ -76,34 +72,29 @@ mixin MailboxActionHandlerMixin {
}))
.show();
} else {
Get.dialog(
PointerInterceptor(
child: ConfirmationDialogBuilder(
key: const Key('confirm_dialog_empty_trash'),
imagePath: imagePaths,
title: AppLocalizations.of(context).emptyTrash,
textContent: AppLocalizations.of(context).empty_trash_dialog_message,
cancelText: AppLocalizations.of(context).cancel,
confirmText: AppLocalizations.of(context).delete,
onCloseButtonAction: popBack,
onConfirmButtonAction: () {
popBack();
if (mailbox.countTotalEmails > 0) {
dashboardController.emptyTrashFolderAction(
trashFolderId: mailbox.id,
totalEmails: mailbox.countTotalEmails
);
} else {
appToast.showToastWarningMessage(
context,
AppLocalizations.of(context).noEmailInYourCurrentFolder
);
}
},
onCancelButtonAction: popBack,
),
),
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
MessageDialogActionManager().showConfirmDialogAction(
key: const Key('confirm_dialog_empty_trash'),
context,
title: AppLocalizations.of(context).emptyTrash,
AppLocalizations.of(context).empty_trash_dialog_message,
cancelTitle: AppLocalizations.of(context).cancel,
AppLocalizations.of(context).delete,
onCloseButtonAction: popBack,
onConfirmAction: () {
popBack();
if (mailbox.countTotalEmails > 0) {
dashboardController.emptyTrashFolderAction(
trashFolderId: mailbox.id,
totalEmails: mailbox.countTotalEmails
);
} else {
appToast.showToastWarningMessage(
context,
AppLocalizations.of(context).noEmailInYourCurrentFolder
);
}
},
onCancelAction: popBack,
);
}
}
@@ -118,7 +109,6 @@ mixin MailboxActionHandlerMixin {
}
final responsiveUtils = Get.find<ResponsiveUtils>();
final imagePaths = Get.find<ImagePaths>();
final appToast = Get.find<AppToast>();
if (responsiveUtils.isScreenWithShortestSide(context)) {
@@ -138,31 +128,26 @@ mixin MailboxActionHandlerMixin {
}))
.show();
} else {
Get.dialog(
PointerInterceptor(
child: ConfirmationDialogBuilder(
key: const Key('confirm_dialog_empty_spam'),
imagePath: imagePaths,
title: AppLocalizations.of(context).emptySpamFolder,
textContent: AppLocalizations.of(context).emptySpamMessageDialog,
cancelText: AppLocalizations.of(context).cancel,
confirmText: AppLocalizations.of(context).delete_all,
onCloseButtonAction: popBack,
onConfirmButtonAction: () {
popBack();
if (mailbox.countTotalEmails > 0) {
dashboardController.emptySpamFolderAction(spamFolderId: mailbox.id, totalEmails: mailbox.countTotalEmails);
} else {
appToast.showToastWarningMessage(
context,
AppLocalizations.of(context).noEmailInYourCurrentFolder
);
}
},
onCancelButtonAction: popBack,
),
),
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
MessageDialogActionManager().showConfirmDialogAction(
key: const Key('confirm_dialog_empty_spam'),
context,
title: AppLocalizations.of(context).emptySpamFolder,
AppLocalizations.of(context).emptySpamMessageDialog,
cancelTitle: AppLocalizations.of(context).cancel,
AppLocalizations.of(context).delete_all,
onCloseButtonAction: popBack,
onConfirmAction: () {
popBack();
if (mailbox.countTotalEmails > 0) {
dashboardController.emptySpamFolderAction(spamFolderId: mailbox.id, totalEmails: mailbox.countTotalEmails);
} else {
appToast.showToastWarningMessage(
context,
AppLocalizations.of(context).noEmailInYourCurrentFolder
);
}
},
onCancelAction: popBack
);
}
}