diff --git a/lib/features/mailbox/presentation/mailbox_controller.dart b/lib/features/mailbox/presentation/mailbox_controller.dart index 249033bc4..096cacc87 100644 --- a/lib/features/mailbox/presentation/mailbox_controller.dart +++ b/lib/features/mailbox/presentation/mailbox_controller.dart @@ -120,7 +120,6 @@ class MailboxController extends BaseMailboxController IOSSharingManager? _iosSharingManager; - final currentSelectMode = SelectMode.INACTIVE.obs; final _activeScrollTop = RxBool(false); final _activeScrollBottom = RxBool(true); @@ -929,16 +928,6 @@ class MailboxController extends BaseMailboxController closeMailboxScreen(context); } - void enableSelectionMailbox() { - currentSelectMode.value = SelectMode.ACTIVE; - } - - void disableSelectionMailbox() { - _cancelSelectMailbox(); - } - - bool isSelectionEnabled() => currentSelectMode.value == SelectMode.ACTIVE; - List get listActionOfMailboxSelected { final currentMailboxesSelected = listMailboxSelected; @@ -964,11 +953,6 @@ class MailboxController extends BaseMailboxController } } - void _cancelSelectMailbox() { - unAllSelectedMailboxNode(); - currentSelectMode.value = SelectMode.INACTIVE; - } - List get listMailboxSelected { final defaultMailboxSelected = defaultMailboxTree.value .findNodes((node) => node.selectMode == SelectMode.ACTIVE); @@ -1042,7 +1026,6 @@ class MailboxController extends BaseMailboxController _deleteMailboxFailure(DeleteMultipleMailboxFailure(null)); } - _cancelSelectMailbox(); popBack(); } @@ -1112,7 +1095,6 @@ class MailboxController extends BaseMailboxController _deleteMailboxFailure(DeleteMultipleMailboxFailure(null)); } - _cancelSelectMailbox(); popBack(); } @@ -1141,8 +1123,6 @@ class MailboxController extends BaseMailboxController RenameMailboxRequest(presentationMailbox.id, newMailboxName)) ); } - - _cancelSelectMailbox(); } void _handleMovingMailbox( @@ -1324,7 +1304,6 @@ class MailboxController extends BaseMailboxController mailboxSelected, destinationMailbox: destinationMailbox ); - _cancelSelectMailbox(); } } @@ -1352,7 +1331,6 @@ class MailboxController extends BaseMailboxController } void closeMailboxScreen(BuildContext context) { - _cancelSelectMailbox(); mailboxDashBoardController.closeMailboxMenuDrawer(); } diff --git a/lib/features/mailbox/presentation/mailbox_view.dart b/lib/features/mailbox/presentation/mailbox_view.dart index 72c331b1e..ed430a6e4 100644 --- a/lib/features/mailbox/presentation/mailbox_view.dart +++ b/lib/features/mailbox/presentation/mailbox_view.dart @@ -7,7 +7,6 @@ import 'package:tmail_ui_user/features/home/domain/extensions/session_extensions import 'package:tmail_ui_user/features/mailbox/presentation/base_mailbox_view.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_categories.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_node.dart'; -import 'package:tmail_ui_user/features/mailbox/presentation/widgets/bottom_bar_selection_mailbox_widget.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/widgets/folder_widget.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/widgets/folders_bar_widget.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/widgets/mailbox_category_widget.dart'; @@ -31,69 +30,25 @@ class MailboxView extends BaseMailboxView { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ + buildMailboxAppBar(), Expanded( - child: Column(children: [ - buildMailboxAppBar(), - Expanded(child: RefreshIndicator( - color: AppColor.primaryColor, - onRefresh: controller.refreshAllMailbox, - child: _buildListMailbox(context) - )), - Obx(() { - if (controller.isSelectionEnabled() - && controller.listActionOfMailboxSelected.isNotEmpty) { - return SafeArea( - right: false, - top: false, - child: BottomBarSelectionMailboxWidget( - controller.listMailboxSelected, - controller.listActionOfMailboxSelected, - onMailboxActionsClick: (actions, listMailboxSelected) { - return controller.pressMailboxSelectionAction( - context, - actions, - listMailboxSelected - ); - } - ) - ); - } else { - return const SizedBox.shrink(); - } - }), - ]), + child: RefreshIndicator( + color: AppColor.primaryColor, + onRefresh: controller.refreshAllMailbox, + child: _buildListMailbox(context), + ), + ), + const Divider(color: AppColor.colorDividerHorizontal), + const QuotasView(), + Container( + width: double.infinity, + color: Colors.white, + padding: const EdgeInsets.all(16), + child: ApplicationVersionWidget( + padding: EdgeInsets.zero, + title: '${AppLocalizations.of(context).version} ', + ), ), - Obx(() { - if (controller.isSelectionEnabled()) { - return const SizedBox.shrink(); - } - - return const Column( - mainAxisSize: MainAxisSize.min, - children: [ - Divider(color: AppColor.colorDividerHorizontal), - QuotasView() - ], - ); - }), - Obx(() { - if (!controller.isSelectionEnabled() && controller.responsiveUtils.isPortraitMobile(context)) { - return Container( - width: double.infinity, - color: Colors.white, - padding: const EdgeInsets.all(16), - child: SafeArea( - top: false, - child: ApplicationVersionWidget( - padding: EdgeInsets.zero, - title: '${AppLocalizations.of(context).version} ', - ), - ), - ); - } else { - return const SizedBox.shrink(); - } - }), ], ), ), @@ -121,8 +76,7 @@ class MailboxView extends BaseMailboxView { }), Obx(() { if (controller.mailboxDashBoardController.listSendingEmails.isNotEmpty && - PlatformInfo.isMobile && - !controller.isSelectionEnabled()) { + PlatformInfo.isMobile) { return SendingQueueMailboxWidget( listSendingEmails: controller.mailboxDashBoardController.listSendingEmails, onOpenSendingQueueAction: () => controller.openSendingQueueViewAction(context), @@ -284,7 +238,6 @@ class MailboxView extends BaseMailboxView { paddingChild: const EdgeInsetsDirectional.only(start: 14), parent: Obx(() => MailboxItemWidget( mailboxNode: mailboxNode, - selectionMode: controller.currentSelectMode.value, mailboxNodeSelected: controller.mailboxDashBoardController.selectedMailbox.value, onLongPressMailboxNodeAction: (mailboxNode) => openMailboxMenuActionOnMobile(context, controller.imagePaths, mailboxNode.item, controller), onOpenMailboxFolderClick: (mailboxNode) => controller.openMailbox(context, mailboxNode.item), @@ -301,7 +254,6 @@ class MailboxView extends BaseMailboxView { } else { return Obx(() => MailboxItemWidget( mailboxNode: mailboxNode, - selectionMode: controller.currentSelectMode.value, mailboxNodeSelected: controller.mailboxDashBoardController.selectedMailbox.value, onLongPressMailboxNodeAction: (mailboxNode) => openMailboxMenuActionOnMobile(context, controller.imagePaths, mailboxNode.item, controller), onOpenMailboxFolderClick: (mailboxNode) => controller.openMailbox(context, mailboxNode.item), diff --git a/lib/features/mailbox/presentation/styles/mailbox_item_widget_styles.dart b/lib/features/mailbox/presentation/styles/mailbox_item_widget_styles.dart index 4382e556f..010ac319a 100644 --- a/lib/features/mailbox/presentation/styles/mailbox_item_widget_styles.dart +++ b/lib/features/mailbox/presentation/styles/mailbox_item_widget_styles.dart @@ -6,5 +6,4 @@ class MailboxItemWidgetStyles { static const double height = 36; static const double teamMailboxHeight = 52; static const double labelIconSpace = 16; - static const double teamMailboxLabelSpace = 3; } \ No newline at end of file diff --git a/lib/features/mailbox/presentation/widgets/mailbox_icon_widget.dart b/lib/features/mailbox/presentation/widgets/mailbox_icon_widget.dart index aba7df8ae..815531949 100644 --- a/lib/features/mailbox/presentation/widgets/mailbox_icon_widget.dart +++ b/lib/features/mailbox/presentation/widgets/mailbox_icon_widget.dart @@ -1,70 +1,25 @@ - -import 'package:core/presentation/resources/image_paths.dart'; -import 'package:core/utils/platform_info.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; -import 'package:model/extensions/presentation_mailbox_extension.dart'; -import 'package:model/mailbox/select_mode.dart'; -import 'package:tmail_ui_user/features/mailbox/presentation/extensions/presentation_mailbox_extension.dart'; -import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_node.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/styles/mailbox_icon_widget_styles.dart'; -import 'package:tmail_ui_user/features/mailbox/presentation/utils/mailbox_method_action_define.dart'; +import 'package:tmail_ui_user/features/mailbox/presentation/styles/mailbox_item_widget_styles.dart'; class MailboxIconWidget extends StatelessWidget { + final String icon; - final ImagePaths imagePaths; - final MailboxNode mailboxNode; - final SelectMode selectionMode; - final OnSelectMailboxNodeAction? onSelectMailboxFolderClick; - final EdgeInsetsGeometry? padding; - - const MailboxIconWidget({ - super.key, - required this.mailboxNode, - required this.imagePaths, - this.selectionMode = SelectMode.INACTIVE, - this.padding, - this.onSelectMailboxFolderClick, - }); + const MailboxIconWidget({super.key, required this.icon}); @override Widget build(BuildContext context) { - Widget? item; - - if (_isSelectionActivatedOnMobile) { - item = InkWell( - onTap: () => onSelectMailboxFolderClick?.call(mailboxNode), - child: SvgPicture.asset( - _getSelectionIcon(imagePaths), - width: MailboxIconWidgetStyles.iconSize, - height: MailboxIconWidgetStyles.iconSize, - fit: BoxFit.fill, - ) - ); - } else if (mailboxNode.item.isPersonal || mailboxNode.item.hasParentId()) { - item = SvgPicture.asset( - mailboxNode.item.getMailboxIcon(imagePaths), + return Padding( + padding: const EdgeInsetsDirectional.only( + end: MailboxItemWidgetStyles.labelIconSpace, + ), + child: SvgPicture.asset( + icon, width: MailboxIconWidgetStyles.iconSize, height: MailboxIconWidgetStyles.iconSize, fit: BoxFit.fill, - ); - } - - if (padding != null) { - return Padding( - padding: padding!, - child: item ?? const SizedBox.shrink(), - ); - } else { - return item ?? const SizedBox.shrink(); - } + ), + ); } - - bool get _isSelectionActivatedOnMobile => PlatformInfo.isMobile && selectionMode == SelectMode.ACTIVE; - - String _getSelectionIcon(ImagePaths imagePaths) { - return mailboxNode.selectMode == SelectMode.ACTIVE - ? imagePaths.icSelected - : imagePaths.icUnSelected; - } -} \ No newline at end of file +} diff --git a/lib/features/mailbox/presentation/widgets/mailbox_item_widget.dart b/lib/features/mailbox/presentation/widgets/mailbox_item_widget.dart index 48cac9cc4..fe97cac41 100644 --- a/lib/features/mailbox/presentation/widgets/mailbox_item_widget.dart +++ b/lib/features/mailbox/presentation/widgets/mailbox_item_widget.dart @@ -9,7 +9,7 @@ import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart'; import 'package:model/email/presentation_email.dart'; import 'package:model/extensions/presentation_mailbox_extension.dart'; import 'package:model/mailbox/presentation_mailbox.dart'; -import 'package:model/mailbox/select_mode.dart'; +import 'package:tmail_ui_user/features/mailbox/presentation/extensions/presentation_mailbox_extension.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_actions.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_displayed.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_node.dart'; @@ -21,7 +21,6 @@ import 'package:tmail_ui_user/features/mailbox/presentation/widgets/mailbox_icon class MailboxItemWidget extends StatefulWidget { final MailboxNode mailboxNode; - final SelectMode selectionMode; final MailboxDisplayed mailboxDisplayed; final PresentationMailbox? mailboxNodeSelected; final MailboxActions? mailboxActions; @@ -38,7 +37,6 @@ class MailboxItemWidget extends StatefulWidget { const MailboxItemWidget({ super.key, required this.mailboxNode, - this.selectionMode = SelectMode.INACTIVE, this.mailboxDisplayed = MailboxDisplayed.mailbox, this.mailboxNodeSelected, this.mailboxActions, @@ -90,17 +88,8 @@ class _MailboxItemWidgetState extends State { ? CrossAxisAlignment.start : CrossAxisAlignment.center, children: [ - MailboxIconWidget( - imagePaths: _imagePaths, - mailboxNode: widget.mailboxNode, - selectionMode: widget.selectionMode, - padding: EdgeInsetsDirectional.only( - end: widget.mailboxNode.item.isTeamMailboxes - ? MailboxItemWidgetStyles.teamMailboxLabelSpace - : MailboxItemWidgetStyles.labelIconSpace, - ), - onSelectMailboxFolderClick: widget.onSelectMailboxFolderClick, - ), + if (_isIconDisplayed) + MailboxIconWidget(icon: _iconMailbox), Expanded( child: LabelMailboxItemWidget( itemKey: _key, @@ -141,17 +130,8 @@ class _MailboxItemWidgetState extends State { : MailboxItemWidgetStyles.height, child: Row( children: [ - MailboxIconWidget( - imagePaths: _imagePaths, - mailboxNode: widget.mailboxNode, - selectionMode: widget.selectionMode, - padding: EdgeInsetsDirectional.only( - end: widget.mailboxNode.item.isTeamMailboxes - ? MailboxItemWidgetStyles.teamMailboxLabelSpace - : MailboxItemWidgetStyles.labelIconSpace, - ), - onSelectMailboxFolderClick: widget.onSelectMailboxFolderClick, - ), + if (_isIconDisplayed) + MailboxIconWidget(icon: _iconMailbox), Expanded( child: LabelMailboxItemWidget( itemKey: _key, @@ -175,9 +155,7 @@ class _MailboxItemWidgetState extends State { color: Colors.transparent, child: InkWell( onLongPress: () => widget.onLongPressMailboxNodeAction?.call(widget.mailboxNode), - onTap: () => widget.selectionMode == SelectMode.ACTIVE - ? widget.onSelectMailboxFolderClick?.call(widget.mailboxNode) - : widget.onOpenMailboxFolderClick?.call(widget.mailboxNode), + onTap: () => widget.onOpenMailboxFolderClick?.call(widget.mailboxNode), borderRadius: const BorderRadius.all(Radius.circular(MailboxItemWidgetStyles.borderRadius)), child: Container( decoration: BoxDecoration( @@ -192,17 +170,8 @@ class _MailboxItemWidgetState extends State { : MailboxItemWidgetStyles.height, child: Row( children: [ - MailboxIconWidget( - imagePaths: _imagePaths, - mailboxNode: widget.mailboxNode, - selectionMode: widget.selectionMode, - padding: EdgeInsetsDirectional.only( - end: widget.mailboxNode.item.isTeamMailboxes - ? MailboxItemWidgetStyles.teamMailboxLabelSpace - : MailboxItemWidgetStyles.labelIconSpace, - ), - onSelectMailboxFolderClick: widget.onSelectMailboxFolderClick, - ), + if (_isIconDisplayed) + MailboxIconWidget(icon: _iconMailbox), Expanded( child: LabelMailboxItemWidget( itemKey: _key, @@ -255,17 +224,8 @@ class _MailboxItemWidgetState extends State { : Colors.transparent, child: Row( children: [ - MailboxIconWidget( - imagePaths: _imagePaths, - mailboxNode: widget.mailboxNode, - selectionMode: widget.selectionMode, - padding: EdgeInsetsDirectional.only( - end: widget.mailboxNode.item.isTeamMailboxes - ? MailboxItemWidgetStyles.teamMailboxLabelSpace - : MailboxItemWidgetStyles.labelIconSpace, - ), - onSelectMailboxFolderClick: widget.onSelectMailboxFolderClick, - ), + if (_isIconDisplayed) + MailboxIconWidget(icon: _iconMailbox), Expanded( child: LabelMailboxItemWidget( itemKey: _key, @@ -320,4 +280,11 @@ class _MailboxItemWidgetState extends State { widget.mailboxActions == MailboxActions.create || widget.mailboxActions == MailboxActions.moveEmail ); + + bool get _isIconDisplayed => + widget.mailboxNode.item.isPersonal || + widget.mailboxNode.item.hasParentId(); + + String get _iconMailbox => + widget.mailboxNode.item.getMailboxIcon(_imagePaths); } \ No newline at end of file