TF-1792 Hide banner empty trash when mailbox trash empty emails
(cherry picked from commit b0533ebb3e480b737a84085d6743eba1b8c897a6)
This commit is contained in:
@@ -57,6 +57,7 @@ extension AppColor on Color {
|
|||||||
static const enableSendEmailButtonColor = Color(0xFF007AFF);
|
static const enableSendEmailButtonColor = Color(0xFF007AFF);
|
||||||
static const disableSendEmailButtonColor = Color(0xFFA9B4C2);
|
static const disableSendEmailButtonColor = Color(0xFFA9B4C2);
|
||||||
static const borderLeftEmailContentColor = Color(0xFFEFEFEF);
|
static const borderLeftEmailContentColor = Color(0xFFEFEFEF);
|
||||||
|
static const toastWarningBackgroundColor = Color(0xFFFFC107);
|
||||||
static const toastSuccessBackgroundColor = Color(0xFF4BB34B);
|
static const toastSuccessBackgroundColor = Color(0xFF4BB34B);
|
||||||
static const toastErrorBackgroundColor = Color(0xFFE64646);
|
static const toastErrorBackgroundColor = Color(0xFFE64646);
|
||||||
static const toastWithActionBackgroundColor = Color(0xFF3F3F3F);
|
static const toastWithActionBackgroundColor = Color(0xFF3F3F3F);
|
||||||
|
|||||||
@@ -48,6 +48,25 @@ class AppToast {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void showToastWarningMessage(
|
||||||
|
BuildContext context,
|
||||||
|
String message,
|
||||||
|
{
|
||||||
|
Color? leadingSVGIconColor,
|
||||||
|
String? leadingSVGIcon,
|
||||||
|
}
|
||||||
|
) {
|
||||||
|
final imagePaths = Get.find<ImagePaths>();
|
||||||
|
showToastMessage(
|
||||||
|
context,
|
||||||
|
message,
|
||||||
|
backgroundColor: AppColor.toastWarningBackgroundColor,
|
||||||
|
textColor: Colors.white,
|
||||||
|
leadingSVGIconColor: leadingSVGIconColor ?? (leadingSVGIcon == null ? Colors.white : null),
|
||||||
|
leadingSVGIcon: leadingSVGIcon ?? imagePaths.icInfoCircleOutline
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
void showToastMessage(
|
void showToastMessage(
|
||||||
BuildContext context,
|
BuildContext context,
|
||||||
String message,
|
String message,
|
||||||
|
|||||||
@@ -1,10 +1,8 @@
|
|||||||
|
|
||||||
import 'package:core/core.dart';
|
import 'package:core/core.dart';
|
||||||
import 'package:core/presentation/views/bottom_popup/confirmation_dialog_action_sheet_builder.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_svg/flutter_svg.dart';
|
import 'package:flutter_svg/flutter_svg.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
|
||||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||||
import 'package:pointer_interceptor/pointer_interceptor.dart';
|
import 'package:pointer_interceptor/pointer_interceptor.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/domain/extensions/presentation_mailbox_extension.dart';
|
import 'package:tmail_ui_user/features/mailbox/domain/extensions/presentation_mailbox_extension.dart';
|
||||||
@@ -47,11 +45,12 @@ mixin MailboxActionHandlerMixin {
|
|||||||
|
|
||||||
void emptyTrashAction(
|
void emptyTrashAction(
|
||||||
BuildContext context,
|
BuildContext context,
|
||||||
MailboxId mailboxId,
|
PresentationMailbox mailbox,
|
||||||
MailboxDashBoardController dashboardController
|
MailboxDashBoardController dashboardController
|
||||||
) {
|
) {
|
||||||
final responsiveUtils = Get.find<ResponsiveUtils>();
|
final responsiveUtils = Get.find<ResponsiveUtils>();
|
||||||
final imagePaths = Get.find<ImagePaths>();
|
final imagePaths = Get.find<ImagePaths>();
|
||||||
|
final appToast = Get.find<AppToast>();
|
||||||
|
|
||||||
if (responsiveUtils.isScreenWithShortestSide(context)) {
|
if (responsiveUtils.isScreenWithShortestSide(context)) {
|
||||||
(ConfirmationDialogActionSheetBuilder(context)
|
(ConfirmationDialogActionSheetBuilder(context)
|
||||||
@@ -59,7 +58,14 @@ mixin MailboxActionHandlerMixin {
|
|||||||
..onCancelAction(AppLocalizations.of(context).cancel, popBack)
|
..onCancelAction(AppLocalizations.of(context).cancel, popBack)
|
||||||
..onConfirmAction(AppLocalizations.of(context).delete, () {
|
..onConfirmAction(AppLocalizations.of(context).delete, () {
|
||||||
popBack();
|
popBack();
|
||||||
dashboardController.emptyTrashFolderAction(trashFolderId: mailboxId);
|
if (mailbox.countEmails > 0) {
|
||||||
|
dashboardController.emptyTrashFolderAction(trashFolderId: mailbox.id);
|
||||||
|
} else {
|
||||||
|
appToast.showToastWarningMessage(
|
||||||
|
context,
|
||||||
|
AppLocalizations.of(context).noEmailInYourCurrentMailbox
|
||||||
|
);
|
||||||
|
}
|
||||||
}))
|
}))
|
||||||
.show();
|
.show();
|
||||||
} else {
|
} else {
|
||||||
@@ -78,8 +84,15 @@ mixin MailboxActionHandlerMixin {
|
|||||||
color: AppColor.colorActionDeleteConfirmDialog))
|
color: AppColor.colorActionDeleteConfirmDialog))
|
||||||
..onCloseButtonAction(popBack)
|
..onCloseButtonAction(popBack)
|
||||||
..onConfirmButtonAction(AppLocalizations.of(context).delete, () {
|
..onConfirmButtonAction(AppLocalizations.of(context).delete, () {
|
||||||
popBack();
|
popBack();
|
||||||
dashboardController.emptyTrashFolderAction(trashFolderId: mailboxId);
|
if (mailbox.countEmails > 0) {
|
||||||
|
dashboardController.emptyTrashFolderAction(trashFolderId: mailbox.id);
|
||||||
|
} else {
|
||||||
|
appToast.showToastWarningMessage(
|
||||||
|
context,
|
||||||
|
AppLocalizations.of(context).noEmailInYourCurrentMailbox
|
||||||
|
);
|
||||||
|
}
|
||||||
})
|
})
|
||||||
..onCancelButtonAction(AppLocalizations.of(context).cancel, popBack))
|
..onCancelButtonAction(AppLocalizations.of(context).cancel, popBack))
|
||||||
.build()));
|
.build()));
|
||||||
|
|||||||
@@ -940,7 +940,7 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
|||||||
_unsubscribeMailboxAction(mailbox.id);
|
_unsubscribeMailboxAction(mailbox.id);
|
||||||
break;
|
break;
|
||||||
case MailboxActions.emptyTrash:
|
case MailboxActions.emptyTrash:
|
||||||
emptyTrashAction(context, mailbox.id, mailboxDashBoardController);
|
emptyTrashAction(context, mailbox, mailboxDashBoardController);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|||||||
+5
-3
@@ -1394,9 +1394,11 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool get isMailboxTrashValid {
|
||||||
|
return selectedMailbox.value != null
|
||||||
bool get isMailboxTrash => selectedMailbox.value?.isTrash == true;
|
&& selectedMailbox.value!.isTrash
|
||||||
|
&& selectedMailbox.value!.countEmails > 0;
|
||||||
|
}
|
||||||
|
|
||||||
void emptyTrashAction(BuildContext context) {
|
void emptyTrashAction(BuildContext context) {
|
||||||
dispatchAction(EmptyTrashAction(context));
|
dispatchAction(EmptyTrashAction(context));
|
||||||
|
|||||||
@@ -639,15 +639,16 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
|||||||
.toList();
|
.toList();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool supportEmptyTrash(BuildContext context) {
|
bool _supportEmptyTrash(BuildContext context) {
|
||||||
return controller.isMailboxTrash
|
return controller.isMailboxTrashValid
|
||||||
&& !controller.searchController.isSearchActive()
|
&& !controller.searchController.isSearchActive()
|
||||||
&& responsiveUtils.isWebDesktop(context);
|
&& responsiveUtils.isWebDesktop(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildEmptyTrashButton(BuildContext context) {
|
Widget _buildEmptyTrashButton(BuildContext context) {
|
||||||
return Obx(() {
|
return Obx(() {
|
||||||
if (supportEmptyTrash(context)) {
|
log('MailboxDashBoardView::_buildEmptyTrashButton():');
|
||||||
|
if (_supportEmptyTrash(context)) {
|
||||||
return Container(
|
return Container(
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
borderRadius: const BorderRadius.all(Radius.circular(14)),
|
borderRadius: const BorderRadius.all(Radius.circular(14)),
|
||||||
|
|||||||
@@ -278,7 +278,7 @@ class SearchMailboxController extends BaseMailboxController with MailboxActionHa
|
|||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
case MailboxActions.emptyTrash:
|
case MailboxActions.emptyTrash:
|
||||||
emptyTrashAction(context, mailbox.id, dashboardController);
|
emptyTrashAction(context, mailbox, dashboardController);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -79,6 +79,8 @@ class PresentationMailbox with EquatableMixin {
|
|||||||
return unreadEmails!.value.value <= 999 ? '${unreadEmails!.value.value}' : '999+';
|
return unreadEmails!.value.value <= 999 ? '${unreadEmails!.value.value}' : '999+';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int get countEmails => totalEmails?.value.value.toInt() ?? 0;
|
||||||
|
|
||||||
bool get isSpam => role == roleSpam;
|
bool get isSpam => role == roleSpam;
|
||||||
|
|
||||||
bool get isTrash => role == roleTrash;
|
bool get isTrash => role == roleTrash;
|
||||||
|
|||||||
Reference in New Issue
Block a user