diff --git a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart index fad66a1b4..08a6584a9 100644 --- a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart +++ b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart @@ -1232,6 +1232,10 @@ class MailboxDashBoardController extends ReloadableController { consumeState(appGridDashboardController.showDashboardAction()); } + bool isAbleMarkAllAsRead(){ + return !searchController.isSearchEmailRunning && selectedMailbox.value != null && selectedMailbox.value!.isDrafts; + } + @override void onClose() { _emailReceiveManager.closeEmailReceiveManagerStream(); diff --git a/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_view_web.dart b/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_view_web.dart index 22cc31311..30284cb6a 100644 --- a/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_view_web.dart +++ b/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_view_web.dart @@ -10,6 +10,7 @@ import 'package:tmail_ui_user/features/mailbox/presentation/mailbox_view_web.dar import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/action/dashboard_action.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/base_mailbox_dashboard_view.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/app_grid_dashboard_controller.dart'; +import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/search_controller.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/composer_overlay_state.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/dashboard_routes.dart'; @@ -38,6 +39,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView { final SearchController searchController = Get.find(); final AppGridDashboardController appGridDashboardController = Get.find(); + final mailBoxDashboardController = Get.find(); @override Widget build(BuildContext context) { @@ -350,7 +352,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView { ..onPressActionClick(() => controller.dispatchAction(SelectionAllEmailAction())) ..text(AppLocalizations.of(context).select_all, isVertical: false)) .build(), - if (!searchController.isSearchEmailRunning) + if (mailBoxDashboardController.isAbleMarkAllAsRead()) Padding( padding: const EdgeInsets.only(left: 16), child: (ButtonBuilder(imagePaths.icMarkAllAsRead) diff --git a/lib/features/thread/presentation/widgets/app_bar_thread_widget_builder.dart b/lib/features/thread/presentation/widgets/app_bar_thread_widget_builder.dart index 959d42490..112adbaa6 100644 --- a/lib/features/thread/presentation/widgets/app_bar_thread_widget_builder.dart +++ b/lib/features/thread/presentation/widgets/app_bar_thread_widget_builder.dart @@ -105,7 +105,8 @@ class AppBarThreadWidgetBuilder extends StatelessWidget { fontSize: 17, fontWeight: FontWeight.w500, color: AppColor.colorTextButton))), - buildIconWeb( + if(_currentMailbox?.isDrafts == false) + buildIconWeb( minSize: 25, iconSize: 25, iconPadding: const EdgeInsets.all(5), diff --git a/lib/features/thread/presentation/widgets/bottom_bar_thread_selection_widget.dart b/lib/features/thread/presentation/widgets/bottom_bar_thread_selection_widget.dart index b6c5a65b3..55388ba46 100644 --- a/lib/features/thread/presentation/widgets/bottom_bar_thread_selection_widget.dart +++ b/lib/features/thread/presentation/widgets/bottom_bar_thread_selection_widget.dart @@ -44,18 +44,19 @@ class BottomBarThreadSelectionWidget { mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ - Expanded(child: (ButtonBuilder(_listSelectionEmail.isAllEmailRead ? _imagePaths.icUnread : _imagePaths.icRead) - ..key(const Key('button_mark_read_email')) - ..paddingIcon(const EdgeInsets.symmetric(horizontal: 8, vertical: 4)) - ..textStyle(const TextStyle(fontSize: 12, color: AppColor.colorTextButton)) - ..onPressActionClick(() { - if (_onPressEmailSelectionActionClick != null) { - _onPressEmailSelectionActionClick!( - _listSelectionEmail.isAllEmailRead ? EmailActionType.markAsUnread : EmailActionType.markAsRead, - _listSelectionEmail); - }}) - ..text(_textButtonMarkAsRead, isVertical: _responsiveUtils.isMobile(_context))) - .build()), + if(_currentMailbox?.isDrafts == false) + Expanded(child: (ButtonBuilder(_listSelectionEmail.isAllEmailRead ? _imagePaths.icUnread : _imagePaths.icRead) + ..key(const Key('button_mark_read_email')) + ..paddingIcon(const EdgeInsets.symmetric(horizontal: 8, vertical: 4)) + ..textStyle(const TextStyle(fontSize: 12, color: AppColor.colorTextButton)) + ..onPressActionClick(() { + if (_onPressEmailSelectionActionClick != null) { + _onPressEmailSelectionActionClick!( + _listSelectionEmail.isAllEmailRead ? EmailActionType.markAsUnread : EmailActionType.markAsRead, + _listSelectionEmail); + }}) + ..text(_textButtonMarkAsRead, isVertical: _responsiveUtils.isMobile(_context))) + .build()), Expanded(child: (ButtonBuilder(_listSelectionEmail.isAllEmailStarred ? _imagePaths.icUnStar : _imagePaths.icStar) ..key(const Key('button_mark_as_star_email')) ..paddingIcon(const EdgeInsets.symmetric(horizontal: 8, vertical: 4)) diff --git a/lib/features/thread/presentation/widgets/email_tile_web_builder.dart b/lib/features/thread/presentation/widgets/email_tile_web_builder.dart index b27ebeaf0..b753cf94e 100644 --- a/lib/features/thread/presentation/widgets/email_tile_web_builder.dart +++ b/lib/features/thread/presentation/widgets/email_tile_web_builder.dart @@ -386,27 +386,28 @@ class EmailTileBuilder with BaseEmailItemTile { Widget _buildListActionButtonWhenHover() { return Row(children: [ - buildIconWeb( - minSize: 18, - iconSize: 18, - iconPadding: const EdgeInsets.all(5), - splashRadius: 10, - icon: SvgPicture.asset( - _presentationEmail.hasRead - ? imagePaths.icUnread - : imagePaths.icRead, - color: AppColor.colorActionButtonHover, - width: 16, - height: 16, - fit: BoxFit.fill), - tooltip: _presentationEmail.hasRead - ? AppLocalizations.of(_context).mark_as_unread - : AppLocalizations.of(_context).mark_as_read, - onTap: () => _emailActionClick?.call( - _presentationEmail.hasRead - ? EmailActionType.markAsUnread - : EmailActionType.markAsRead, - _presentationEmail)), + if(!_presentationEmail.isDraft) + buildIconWeb( + minSize: 18, + iconSize: 18, + iconPadding: const EdgeInsets.all(5), + splashRadius: 10, + icon: SvgPicture.asset( + _presentationEmail.hasRead + ? imagePaths.icRead + : imagePaths.icUnread, + color: AppColor.colorActionButtonHover, + width: 16, + height: 16, + fit: BoxFit.fill), + tooltip: _presentationEmail.hasRead + ? AppLocalizations.of(_context).mark_as_unread + : AppLocalizations.of(_context).mark_as_read, + onTap: () => _emailActionClick?.call( + _presentationEmail.hasRead + ? EmailActionType.markAsUnread + : EmailActionType.markAsRead, + _presentationEmail)), const SizedBox(width: 5), if (mailboxCurrent?.isDrafts == false) ... [ diff --git a/model/lib/email/presentation_email.dart b/model/lib/email/presentation_email.dart index 19811086b..18036c1bf 100644 --- a/model/lib/email/presentation_email.dart +++ b/model/lib/email/presentation_email.dart @@ -66,6 +66,8 @@ class PresentationEmail with EquatableMixin { bool get hasStarred => keywords?.containsKey(KeyWordIdentifier.emailFlagged) == true; + bool get isDraft => keywords?.containsKey(KeyWordIdentifier.emailDraft) == true; + bool get withAttachments => hasAttachment == true; String get mailboxName => mailboxNames?.first?.name ?? '';