From 8513b2da93427909bd1caf0c592013df6d693ac7 Mon Sep 17 00:00:00 2001 From: dab246 Date: Thu, 11 May 2023 14:41:18 +0700 Subject: [PATCH] TF-1815 Move email improvement (cherry picked from commit d7884423c0e14697ec2af29e55d39602aa7869f8) --- ...on_picker_search_mailbox_item_builder.dart | 15 ++++++---- .../controller/single_email_controller.dart | 7 ++++- .../widgets/mailbox_folder_tile_builder.dart | 28 ++++++++++++------- .../mailbox_dashboard_controller.dart | 3 +- .../mixin/email_action_controller.dart | 6 +++- 5 files changed, 41 insertions(+), 18 deletions(-) diff --git a/lib/features/destination_picker/presentation/widgets/destination_picker_search_mailbox_item_builder.dart b/lib/features/destination_picker/presentation/widgets/destination_picker_search_mailbox_item_builder.dart index 14fe4206a..a9b8362a2 100644 --- a/lib/features/destination_picker/presentation/widgets/destination_picker_search_mailbox_item_builder.dart +++ b/lib/features/destination_picker/presentation/widgets/destination_picker_search_mailbox_item_builder.dart @@ -76,7 +76,7 @@ class DestinationPickerSearchMailboxItemBuilder extends StatelessWidget { } void _onTapMailboxAction() { - if (onClickOpenMailboxAction != null) { + if (!_isSelectActionNoValid && onClickOpenMailboxAction != null) { onClickOpenMailboxAction?.call(_presentationMailbox); } } @@ -134,16 +134,14 @@ class DestinationPickerSearchMailboxItemBuilder extends StatelessWidget { } Widget _buildSelectedIcon(BuildContext context) { - if (_presentationMailbox.id == mailboxIdAlreadySelected && - (mailboxActions == MailboxActions.select || - mailboxActions == MailboxActions.create)) { + if (_isSelectActionNoValid) { return Padding( padding: EdgeInsets.only( right: AppUtils.isDirectionRTL(context) ? 0 : 8, left: AppUtils.isDirectionRTL(context) ? 8 : 0, ), child: SvgPicture.asset( - _imagePaths.icFilterSelected, + _imagePaths.icSelectedSB, width: 20, height: 20, fit: BoxFit.fill @@ -153,4 +151,11 @@ class DestinationPickerSearchMailboxItemBuilder extends StatelessWidget { return const SizedBox.shrink(); } } + + bool get _isSelectActionNoValid => _presentationMailbox.id == mailboxIdAlreadySelected && + ( + mailboxActions == MailboxActions.select || + mailboxActions == MailboxActions.create || + mailboxActions == MailboxActions.moveEmail + ); } \ No newline at end of file diff --git a/lib/features/email/presentation/controller/single_email_controller.dart b/lib/features/email/presentation/controller/single_email_controller.dart index b1afabc25..fab6b4cf9 100644 --- a/lib/features/email/presentation/controller/single_email_controller.dart +++ b/lib/features/email/presentation/controller/single_email_controller.dart @@ -619,7 +619,12 @@ class SingleEmailController extends BaseController with AppLoaderMixin { final session = mailboxDashBoardController.sessionCurrent; if (currentMailbox != null && accountId != null) { - final arguments = DestinationPickerArguments(accountId, MailboxActions.moveEmail, session); + final arguments = DestinationPickerArguments( + accountId, + MailboxActions.moveEmail, + session, + mailboxIdSelected: currentMailbox.mailboxId + ); if (BuildUtils.isWeb) { showDialogDestinationPicker( context: context, diff --git a/lib/features/mailbox/presentation/widgets/mailbox_folder_tile_builder.dart b/lib/features/mailbox/presentation/widgets/mailbox_folder_tile_builder.dart index 1aad0cb5e..6aaeab115 100644 --- a/lib/features/mailbox/presentation/widgets/mailbox_folder_tile_builder.dart +++ b/lib/features/mailbox/presentation/widgets/mailbox_folder_tile_builder.dart @@ -160,7 +160,9 @@ class MailBoxFolderTileBuilder { child: Material( color: Colors.transparent, child: InkWell( - onTap: () => _onOpenMailboxFolderClick?.call(_mailboxNode), + onTap: () => !_isSelectActionNoValid + ? _onOpenMailboxFolderClick?.call(_mailboxNode) + : null, customBorder: const RoundedRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(8))), hoverColor: AppColor.colorMailboxHovered, child: Container( @@ -172,7 +174,8 @@ class MailBoxFolderTileBuilder { _buildLeadingMailboxItem(context), const SizedBox(width: 8), Expanded(child: _buildTitleFolderItem(context, showTrailingItem: false)), - _buildSelectedIcon() + _buildSelectedIcon(), + const SizedBox(width: 8), ]) ), ), @@ -400,17 +403,22 @@ class MailBoxFolderTileBuilder { } Widget _buildSelectedIcon() { - if (_mailboxNode.item.id == mailboxIdAlreadySelected && - mailboxDisplayed == MailboxDisplayed.destinationPicker && - (mailboxActions == MailboxActions.select || - mailboxActions == MailboxActions.create)) { + if (_isSelectActionNoValid) { return SvgPicture.asset( - _imagePaths.icFilterSelected, - width: 20, - height: 20, - fit: BoxFit.fill); + _imagePaths.icSelectedSB, + width: 20, + height: 20, + fit: BoxFit.fill); } else { return const SizedBox.shrink(); } } + + bool get _isSelectActionNoValid => _mailboxNode.item.id == mailboxIdAlreadySelected && + mailboxDisplayed == MailboxDisplayed.destinationPicker && + ( + mailboxActions == MailboxActions.select || + mailboxActions == MailboxActions.create || + mailboxActions == MailboxActions.moveEmail + ); } \ No newline at end of file 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 5b82f1a68..3fda88b08 100644 --- a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart +++ b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart @@ -750,7 +750,8 @@ class MailboxDashBoardController extends ReloadableController { final arguments = DestinationPickerArguments( accountId.value!, MailboxActions.moveEmail, - sessionCurrent); + sessionCurrent, + mailboxIdSelected: currentMailbox.mailboxId); if (BuildUtils.isWeb) { showDialogDestinationPicker( diff --git a/lib/features/thread/presentation/mixin/email_action_controller.dart b/lib/features/thread/presentation/mixin/email_action_controller.dart index 81600ad90..c73dc76ba 100644 --- a/lib/features/thread/presentation/mixin/email_action_controller.dart +++ b/lib/features/thread/presentation/mixin/email_action_controller.dart @@ -125,7 +125,11 @@ mixin EmailActionController on ViewAsDialogActionMixin { final session = mailboxDashBoardController.sessionCurrent; if (mailboxContain != null && accountId != null) { - final arguments = DestinationPickerArguments(accountId, MailboxActions.moveEmail, session); + final arguments = DestinationPickerArguments( + accountId, + MailboxActions.moveEmail, + session, + mailboxIdSelected: mailboxContain.mailboxId); if (BuildUtils.isWeb) { showDialogDestinationPicker(