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:
+12
@@ -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();
|
||||||
|
|||||||
Reference in New Issue
Block a user