TF-2951 Remove Clean button, Empty Trash/Spam now banner and Filters when there is no email in Spam/Trash folder

This commit is contained in:
dab246
2024-07-17 04:01:22 +07:00
committed by Dat H. Pham
parent 3c6dbe82d1
commit 957fe7a78c
2 changed files with 98 additions and 72 deletions
@@ -2569,6 +2569,18 @@ class MailboxDashBoardController extends ReloadableController with UserSettingPo
); );
} }
bool validateNoEmailsInTrashAndSpamFolder() {
return selectedMailbox.value != null
&& (selectedMailbox.value!.isTrash || selectedMailbox.value!.isSpam)
&& selectedMailbox.value!.countTotalEmails <= 0;
}
bool validateNoEmailsInTrashFolder() {
return selectedMailbox.value != null
&& selectedMailbox.value!.isTrash
&& selectedMailbox.value!.countTotalEmails <= 0;
}
@override @override
void onClose() { void onClose() {
_emailReceiveManager.closeEmailReceiveManagerStream(); _emailReceiveManager.closeEmailReceiveManagerStream();
@@ -3,8 +3,8 @@ import 'package:flutter/material.dart';
import 'package:flutter_portal/flutter_portal.dart'; import 'package:flutter_portal/flutter_portal.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:model/extensions/presentation_mailbox_extension.dart';
import 'package:model/extensions/username_extension.dart'; import 'package:model/extensions/username_extension.dart';
import 'package:model/mailbox/presentation_mailbox.dart';
import 'package:tmail_ui_user/features/base/widget/popup_item_no_icon_widget.dart'; import 'package:tmail_ui_user/features/base/widget/popup_item_no_icon_widget.dart';
import 'package:tmail_ui_user/features/composer/presentation/composer_view_web.dart'; import 'package:tmail_ui_user/features/composer/presentation/composer_view_web.dart';
import 'package:tmail_ui_user/features/email/presentation/email_view.dart'; import 'package:tmail_ui_user/features/email/presentation/email_view.dart';
@@ -293,87 +293,101 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
} }
); );
}), }),
const SizedBox(width: 16), Obx(() {
Tooltip( if (controller.validateNoEmailsInTrashAndSpamFolder()) {
message: AppLocalizations.of(context).selectAllMessagesOfThisPage, return const SizedBox.shrink();
child: ElevatedButton.icon( } else {
onPressed: controller.selectAllEmailAction, return Padding(
icon: SvgPicture.asset( padding: const EdgeInsetsDirectional.only(start: 16),
controller.imagePaths.icSelectAll, child: Tooltip(
width: 16, message: AppLocalizations.of(context).selectAllMessagesOfThisPage,
height: 16, child: ElevatedButton.icon(
fit: BoxFit.fill, onPressed: controller.selectAllEmailAction,
), icon: SvgPicture.asset(
label: Text( controller.imagePaths.icSelectAll,
AppLocalizations.of(context).selectAllMessagesOfThisPage, width: 16,
maxLines: 1, height: 16,
overflow: TextOverflow.ellipsis fit: BoxFit.fill,
), ),
style: ElevatedButton.styleFrom( label: Text(
backgroundColor: AppColor.colorButtonHeaderThread, AppLocalizations.of(context).selectAllMessagesOfThisPage,
shadowColor: Colors.transparent, maxLines: 1,
padding: const EdgeInsetsDirectional.symmetric(horizontal: 12, vertical: 8), overflow: TextOverflow.ellipsis
shape: const RoundedRectangleBorder( ),
borderRadius: BorderRadius.all(Radius.circular(10)), style: ElevatedButton.styleFrom(
backgroundColor: AppColor.colorButtonHeaderThread,
shadowColor: Colors.transparent,
padding: const EdgeInsetsDirectional.symmetric(horizontal: 12, vertical: 8),
shape: const RoundedRectangleBorder(
borderRadius: BorderRadius.all(Radius.circular(10)),
),
elevation: 0.0,
foregroundColor: AppColor.colorTextButtonHeaderThread,
maximumSize: const Size.fromWidth(250),
textStyle: const TextStyle(fontSize: 12),
),
),
), ),
elevation: 0.0, );
foregroundColor: AppColor.colorTextButtonHeaderThread, }
maximumSize: const Size.fromWidth(250), }),
textStyle: const TextStyle(fontSize: 12), Obx(() {
), if (controller.isAbleMarkAllAsRead()) {
), return TMailButtonWidget(
),
if (controller.isAbleMarkAllAsRead())
Padding(
padding: const EdgeInsetsDirectional.only(start: 16),
child: TMailButtonWidget(
key: const Key('mark_as_read_emails_button'), key: const Key('mark_as_read_emails_button'),
text: AppLocalizations.of(context).mark_all_as_read, text: AppLocalizations.of(context).mark_all_as_read,
icon: controller.imagePaths.icSelectAll, icon: controller.imagePaths.icSelectAll,
borderRadius: 10, borderRadius: 10,
margin: const EdgeInsetsDirectional.only(start: 16),
iconSize: 16, iconSize: 16,
padding: const EdgeInsetsDirectional.symmetric(horizontal: 12, vertical: 8), padding: const EdgeInsetsDirectional.symmetric(horizontal: 12, vertical: 8),
onTapActionCallback: () => controller.markAsReadMailboxAction(context), onTapActionCallback: () => controller.markAsReadMailboxAction(context),
),
),
const SizedBox(width: 16),
Obx(() => TMailButtonWidget(
key: const Key('filter_emails_button'),
text: controller.filterMessageOption.value == FilterMessageOption.all
? AppLocalizations.of(context).filter_messages
: controller.filterMessageOption.value.getTitle(context),
icon: controller.filterMessageOption.value.getIconSelected(controller.imagePaths),
borderRadius: 10,
iconSize: 16,
padding: const EdgeInsetsDirectional.symmetric(horizontal: 12, vertical: 8),
backgroundColor: controller.filterMessageOption.value.getBackgroundColor(),
textStyle: controller.filterMessageOption.value.getTextStyle(),
trailingIcon: controller.imagePaths.icArrowDown,
onTapActionAtPositionCallback: (position) {
return controller.openPopupMenuAction(
context,
position,
popupMenuFilterEmailActionTile(
context,
controller.filterMessageOption.value,
(option) => controller.dispatchAction(FilterMessageAction(context, option)),
isSearchEmailRunning: controller.searchController.isSearchEmailRunning
)
); );
}, } else {
)), return const SizedBox.shrink();
}
}),
Obx(() { Obx(() {
final mailboxSelected = controller.selectedMailbox.value; if (controller.validateNoEmailsInTrashAndSpamFolder()) {
if (mailboxSelected != null && mailboxSelected.role == PresentationMailbox.roleTrash) { return const SizedBox.shrink();
return Padding( } else {
padding: const EdgeInsetsDirectional.only(start: 16), return TMailButtonWidget(
child: TMailButtonWidget.fromIcon( key: const Key('filter_emails_button'),
key: const Key('recover_deleted_messages_button'), text: controller.filterMessageOption.value == FilterMessageOption.all
icon: controller.imagePaths.icRecoverDeletedMessages, ? AppLocalizations.of(context).filter_messages
borderRadius: 10, : controller.filterMessageOption.value.getTitle(context),
iconSize: 16, icon: controller.filterMessageOption.value.getIconSelected(controller.imagePaths),
onTapActionCallback: () => controller.gotoEmailRecovery(), borderRadius: 10,
), iconSize: 16,
margin: const EdgeInsetsDirectional.only(start: 16),
padding: const EdgeInsetsDirectional.symmetric(horizontal: 12, vertical: 8),
backgroundColor: controller.filterMessageOption.value.getBackgroundColor(),
textStyle: controller.filterMessageOption.value.getTextStyle(),
trailingIcon: controller.imagePaths.icArrowDown,
onTapActionAtPositionCallback: (position) {
return controller.openPopupMenuAction(
context,
position,
popupMenuFilterEmailActionTile(
context,
controller.filterMessageOption.value,
(option) => controller.dispatchAction(FilterMessageAction(context, option)),
isSearchEmailRunning: controller.searchController.isSearchEmailRunning
)
);
},
);
}
}),
Obx(() {
if (controller.selectedMailbox.value?.isTrash == true) {
return TMailButtonWidget.fromIcon(
key: const Key('recover_deleted_messages_button'),
icon: controller.imagePaths.icRecoverDeletedMessages,
borderRadius: 10,
iconSize: 16,
margin: const EdgeInsetsDirectional.only(start: 16),
onTapActionCallback: () => controller.gotoEmailRecovery(),
); );
} else { } else {
return const SizedBox.shrink(); return const SizedBox.shrink();