From 7e969c5e38ae82e34440392e0632588f9d73d949 Mon Sep 17 00:00:00 2001 From: dab246 Date: Fri, 17 Feb 2023 13:28:08 +0700 Subject: [PATCH] Always show `default` mailbox in all MailboxView, Search Mailbox and Settings --- .../destination_picker_controller.dart | 2 - .../presentation/destination_picker_view.dart | 1 + .../presentation/mailbox_controller.dart | 20 +-- .../mailbox/presentation/mailbox_view.dart | 20 +-- .../presentation/mailbox_view_web.dart | 9 +- .../mixin/mailbox_widget_mixin.dart | 4 +- .../widgets/mailbox_folder_tile_builder.dart | 159 ++++++++---------- .../mailbox_visibility_controller.dart | 16 +- .../mailbox_visibility_view.dart | 15 +- .../state/mailbox_visibility_state.dart | 5 - ...ailbox_visibility_folder_tile_builder.dart | 6 +- .../mailbox_searched_item_builder.dart | 4 +- .../list_presentation_mailbox_extension.dart | 3 + model/lib/mailbox/presentation_mailbox.dart | 2 + 14 files changed, 115 insertions(+), 151 deletions(-) delete mode 100644 lib/features/manage_account/presentation/mailbox_visibility/state/mailbox_visibility_state.dart diff --git a/lib/features/destination_picker/presentation/destination_picker_controller.dart b/lib/features/destination_picker/presentation/destination_picker_controller.dart index 9362fa5ae..d3e2dcc20 100644 --- a/lib/features/destination_picker/presentation/destination_picker_controller.dart +++ b/lib/features/destination_picker/presentation/destination_picker_controller.dart @@ -33,7 +33,6 @@ import 'package:tmail_ui_user/features/mailbox/domain/usecases/refresh_all_mailb import 'package:tmail_ui_user/features/mailbox/domain/usecases/search_mailbox_interactor.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_actions.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_categories.dart'; -import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_categories_expand_mode.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_node.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_tree_builder.dart'; import 'package:tmail_ui_user/features/mailbox_creator/domain/model/verification/duplicate_name_validator.dart'; @@ -64,7 +63,6 @@ class DestinationPickerController extends BaseMailboxController { final listMailboxSearched = [].obs; final searchState = SearchState.initial().obs; final searchQuery = SearchQuery.initial().obs; - final mailboxCategoriesExpandMode = MailboxCategoriesExpandMode.initial().obs; final destinationScreenType = DestinationScreenType.destinationPicker.obs; final mailboxDestination = Rxn(); final newNameMailbox = Rxn(); diff --git a/lib/features/destination_picker/presentation/destination_picker_view.dart b/lib/features/destination_picker/presentation/destination_picker_view.dart index cb3a40945..2dc628b26 100644 --- a/lib/features/destination_picker/presentation/destination_picker_view.dart +++ b/lib/features/destination_picker/presentation/destination_picker_view.dart @@ -343,6 +343,7 @@ class DestinationPickerView extends GetWidget context, key: const Key('children_tree_mailbox_child'), isExpanded: mailboxNode.expandMode == ExpandMode.EXPAND, + paddingChild: const EdgeInsets.only(left: 14), parent: (MailBoxFolderTileBuilder( context, _imagePaths, diff --git a/lib/features/mailbox/presentation/mailbox_controller.dart b/lib/features/mailbox/presentation/mailbox_controller.dart index 9f6aae92b..f490bbea5 100644 --- a/lib/features/mailbox/presentation/mailbox_controller.dart +++ b/lib/features/mailbox/presentation/mailbox_controller.dart @@ -147,11 +147,9 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM super.onData(newState); newState.map((success) async { if (success is GetAllMailboxSuccess) { - currentMailboxState = success.currentMailboxState; - _buildMailboxTreeHasSubscribed(success.mailboxList); + _handleGetAllMailboxSuccess(success); } else if (success is RefreshChangesAllMailboxSuccess) { - currentMailboxState = success.currentMailboxState; - _refreshMailboxTreeHasSubscribed(success.mailboxList); + _handleRefreshChangesAllMailboxSuccess(success); } }); } @@ -979,14 +977,16 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM curve: Curves.fastOutSlowIn); } - void _buildMailboxTreeHasSubscribed(List mailboxList) async { - final _mailboxList = mailboxList.listSubscribedMailboxes; - await buildTree(_mailboxList); + void _handleGetAllMailboxSuccess(GetAllMailboxSuccess success) async { + currentMailboxState = success.currentMailboxState; + final listMailboxDisplayed = success.mailboxList.listSubscribedMailboxesAndDefaultMailboxes; + await buildTree(listMailboxDisplayed); } - void _refreshMailboxTreeHasSubscribed(List mailboxList) async { - final _mailboxList = mailboxList.listSubscribedMailboxes; - await refreshTree(_mailboxList); + void _handleRefreshChangesAllMailboxSuccess(RefreshChangesAllMailboxSuccess success) async { + currentMailboxState = success.currentMailboxState; + final listMailboxDisplayed = success.mailboxList.listSubscribedMailboxesAndDefaultMailboxes; + await refreshTree(listMailboxDisplayed); } void _unsubscribeMailboxAction(MailboxId mailboxId) { diff --git a/lib/features/mailbox/presentation/mailbox_view.dart b/lib/features/mailbox/presentation/mailbox_view.dart index 6ea660b46..afd9c47e9 100644 --- a/lib/features/mailbox/presentation/mailbox_view.dart +++ b/lib/features/mailbox/presentation/mailbox_view.dart @@ -1,10 +1,10 @@ import 'package:core/core.dart'; -import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:get/get.dart'; import 'package:model/model.dart'; import 'package:package_info_plus/package_info_plus.dart'; +import 'package:tmail_ui_user/features/base/mixin/app_loader_mixin.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/mailbox_controller.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/mixin/mailbox_widget_mixin.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_categories.dart'; @@ -15,7 +15,9 @@ import 'package:tmail_ui_user/features/mailbox/presentation/widgets/user_informa import 'package:tmail_ui_user/features/quotas/presentation/widget/quotas_footer_widget.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; -class MailboxView extends GetWidget with MailboxWidgetMixin { +class MailboxView extends GetWidget + with MailboxWidgetMixin, + AppLoaderMixin { final _imagePaths = Get.find(); final _responsiveUtils = Get.find(); @@ -156,12 +158,7 @@ class MailboxView extends GetWidget with MailboxWidgetMixin { return Obx(() => controller.viewState.value.fold( (failure) => const SizedBox.shrink(), (success) => success is LoadingState - ? const Center(child: Padding( - padding: EdgeInsets.only(top: 16), - child: SizedBox( - width: 24, - height: 24, - child: CupertinoActivityIndicator(color: AppColor.colorTextButton)))) + ? Padding(padding: const EdgeInsets.only(top: 16), child: loadingWidget) : const SizedBox.shrink())); } @@ -334,12 +331,14 @@ class MailboxView extends GetWidget with MailboxWidgetMixin { context, key: const Key('children_tree_mailbox_child'), isExpanded: mailboxNode.expandMode == ExpandMode.EXPAND, + paddingChild: const EdgeInsets.only(left: 14), parent: Obx(() => (MailBoxFolderTileBuilder( context, _imagePaths, mailboxNode, lastNode: lastNode, - allSelectMode: controller.currentSelectMode.value) + allSelectMode: controller.currentSelectMode.value, + mailboxNodeSelected: controller.mailboxDashBoardController.selectedMailbox.value) ..addOnLongPressMailboxNodeAction((mailboxNode) { openMailboxMenuActionOnMobile( context, @@ -360,7 +359,8 @@ class MailboxView extends GetWidget with MailboxWidgetMixin { _imagePaths, mailboxNode, lastNode: lastNode, - allSelectMode: controller.currentSelectMode.value) + allSelectMode: controller.currentSelectMode.value, + mailboxNodeSelected: controller.mailboxDashBoardController.selectedMailbox.value) ..addOnLongPressMailboxNodeAction((mailboxNode) { openMailboxMenuActionOnMobile( context, diff --git a/lib/features/mailbox/presentation/mailbox_view_web.dart b/lib/features/mailbox/presentation/mailbox_view_web.dart index 4624204bb..a87566737 100644 --- a/lib/features/mailbox/presentation/mailbox_view_web.dart +++ b/lib/features/mailbox/presentation/mailbox_view_web.dart @@ -89,10 +89,10 @@ class MailboxView extends GetWidget Widget _buildLoadingView() { return Obx(() => controller.viewState.value.fold( - (failure) => const SizedBox.shrink(), - (success) => success is LoadingState - ? Padding(padding: const EdgeInsets.only(top: 16), child: loadingWidget) - : const SizedBox.shrink())); + (failure) => const SizedBox.shrink(), + (success) => success is LoadingState + ? Padding(padding: const EdgeInsets.only(top: 16), child: loadingWidget) + : const SizedBox.shrink())); } Widget _buildListMailbox(BuildContext context) { @@ -294,6 +294,7 @@ class MailboxView extends GetWidget context, key: const Key('children_tree_mailbox_child'), isExpanded: mailboxNode.expandMode == ExpandMode.EXPAND, + paddingChild: const EdgeInsets.only(left: 14), parent: Obx(() => (MailBoxFolderTileBuilder( context, _imagePaths, diff --git a/lib/features/mailbox/presentation/mixin/mailbox_widget_mixin.dart b/lib/features/mailbox/presentation/mixin/mailbox_widget_mixin.dart index 68c099e14..b5144d461 100644 --- a/lib/features/mailbox/presentation/mixin/mailbox_widget_mixin.dart +++ b/lib/features/mailbox/presentation/mixin/mailbox_widget_mixin.dart @@ -42,7 +42,7 @@ mixin MailboxWidgetMixin { List _listActionForPersonalMailbox(PresentationMailbox mailbox) { return [ - if (BuildUtils.isWeb) + if (BuildUtils.isWeb && mailbox.isSubscribedMailbox) MailboxActions.openInNewTab, MailboxActions.markAsRead, MailboxActions.move, @@ -57,7 +57,7 @@ mixin MailboxWidgetMixin { List _listActionForTeamMailbox(PresentationMailbox mailbox) { return [ - if (BuildUtils.isWeb) + if (BuildUtils.isWeb && mailbox.isSubscribedMailbox) MailboxActions.openInNewTab, MailboxActions.markAsRead, if (mailbox.isTeamMailboxes) 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 4c4a22aec..209ea74a0 100644 --- a/lib/features/mailbox/presentation/widgets/mailbox_folder_tile_builder.dart +++ b/lib/features/mailbox/presentation/widgets/mailbox_folder_tile_builder.dart @@ -1,9 +1,15 @@ -import 'package:core/core.dart'; +import 'package:core/presentation/extensions/color_extension.dart'; +import 'package:core/presentation/resources/image_paths.dart'; +import 'package:core/presentation/utils/style_utils.dart'; +import 'package:core/presentation/views/button/icon_button_web.dart'; +import 'package:core/utils/build_utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; -import 'package:get/get.dart'; import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart'; -import 'package:model/model.dart'; +import 'package:model/email/presentation_email.dart'; +import 'package:model/mailbox/expand_mode.dart'; +import 'package:model/mailbox/presentation_mailbox.dart'; +import 'package:model/mailbox/select_mode.dart'; import 'package:tmail_ui_user/features/mailbox/domain/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'; @@ -13,8 +19,6 @@ import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; class MailBoxFolderTileBuilder { - final _responsiveUtils = Get.find(); - final MailboxNode _mailboxNode; final BuildContext _context; final ImagePaths _imagePaths; @@ -90,79 +94,62 @@ class MailBoxFolderTileBuilder { Widget _buildMailboxItem() { if (mailboxDisplayed == MailboxDisplayed.mailbox) { if (BuildUtils.isWeb) { - return Theme( - data: ThemeData( - splashColor: Colors.transparent, - highlightColor: Colors.transparent), - child: StatefulBuilder( - builder: (BuildContext context, StateSetter setState) { - return InkWell( - onTap: () => _onOpenMailboxFolderClick?.call(_mailboxNode), - onHover: (value) => setState(() => isHoverItem = value), - child: Container( - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(10), - color: backgroundColorItem), - padding: EdgeInsets.only( - left: _mailboxNode.item.hasRole() ? 0 : 4, - right: 4, - top: 8, - bottom: 8), - margin: const EdgeInsets.only(bottom: 4), - child: Row( - crossAxisAlignment: _mailboxNode.item.isTeamMailboxes - ? CrossAxisAlignment.start - : CrossAxisAlignment.center, - children: [ - _buildLeadingMailboxItem(), - const SizedBox(width: 4), - Expanded(child: _buildTitleFolderItem()), - const SizedBox(width: 8), - _buildTrailingItemForMailboxView() - ]) - ), - ); - } - ), + return StatefulBuilder( + builder: (context, setState) { + return InkWell( + onTap: () => _onOpenMailboxFolderClick?.call(_mailboxNode), + onHover: (value) => setState(() => isHoverItem = value), + child: Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8), + color: backgroundColorItem), + padding: const EdgeInsets.all(8), + child: Row( + crossAxisAlignment: _mailboxNode.item.isTeamMailboxes + ? CrossAxisAlignment.start + : CrossAxisAlignment.center, + children: [ + _buildLeadingMailboxItem(), + const SizedBox(width: 4), + Expanded(child: _buildTitleFolderItem()), + const SizedBox(width: 8), + _buildTrailingItemForMailboxView() + ]) + ), + ); + } ); } else { - return AbsorbPointer( - absorbing: !_mailboxNode.isActivated, - child: Opacity( - opacity: _mailboxNode.isActivated ? 1.0 : 0.3, - child: Material( - color: Colors.transparent, - child: InkWell( - onLongPress: () => _onLongPressMailboxNodeAction?.call(_mailboxNode), - onTap: () => allSelectMode == SelectMode.ACTIVE - ? _onSelectMailboxFolderClick?.call(_mailboxNode) - : _onOpenMailboxFolderClick?.call(_mailboxNode), - borderRadius: const BorderRadius.all(Radius.circular(8)), - child: ClipRRect( - borderRadius: const BorderRadius.all(Radius.circular(14)), - child: Column( - mainAxisSize: MainAxisSize.min, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Padding( - padding: EdgeInsets.symmetric( - vertical: _mailboxNode.hasChildren() ? 8 : 15), - child: Row( - crossAxisAlignment: _mailboxNode.item.isTeamMailboxes - ? CrossAxisAlignment.start - : CrossAxisAlignment.center, - children: [ - _buildLeadingMailboxItem(), - const SizedBox(width: 8), - Expanded(child: _buildTitleFolderItem()), - _buildSelectedIcon(), - const SizedBox(width: 8), - _buildTrailingItemForMailboxView() - ]), - ), - ] - ) - ), + return Material( + color: Colors.transparent, + child: InkWell( + onLongPress: () => _onLongPressMailboxNodeAction?.call(_mailboxNode), + onTap: () => allSelectMode == SelectMode.ACTIVE + ? _onSelectMailboxFolderClick?.call(_mailboxNode) + : _onOpenMailboxFolderClick?.call(_mailboxNode), + borderRadius: const BorderRadius.all(Radius.circular(8)), + child: Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8), + color: backgroundColorItem), + padding: const EdgeInsets.all(8), + child: Column( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Row( + crossAxisAlignment: _mailboxNode.item.isTeamMailboxes + ? CrossAxisAlignment.start + : CrossAxisAlignment.center, + children: [ + _buildLeadingMailboxItem(), + const SizedBox(width: 8), + Expanded(child: _buildTitleFolderItem()), + _buildSelectedIcon(), + const SizedBox(width: 8), + _buildTrailingItemForMailboxView() + ]), + ] ), ), ), @@ -188,8 +175,7 @@ class MailBoxFolderTileBuilder { _buildLeadingMailboxItem(), const SizedBox(width: 8), Expanded(child: _buildTitleFolderItem()), - _buildSelectedIcon(), - const SizedBox(width: 8) + _buildSelectedIcon() ]) ), ), @@ -209,9 +195,9 @@ class MailBoxFolderTileBuilder { _mailboxNode.expandMode == ExpandMode.EXPAND ? _imagePaths.icExpandFolder : _imagePaths.icCollapseFolder, - color: _mailboxNode.expandMode == ExpandMode.EXPAND - ? AppColor.colorExpandMailbox - : AppColor.colorCollapseMailbox, + color: _mailboxNode.item.isSubscribedMailbox + ? AppColor.primaryColor + : AppColor.colorIconUnSubscribedMailbox, fit: BoxFit.fill ), minSize: 12, @@ -383,15 +369,10 @@ class MailBoxFolderTileBuilder { if (mailboxDisplayed == MailboxDisplayed.destinationPicker) { return Colors.white; } else { - if (BuildUtils.isWeb) { - if (mailboxNodeSelected?.id == _mailboxNode.item.id || isHoverItem) { - return AppColor.colorBgMailboxSelected; - } - return _responsiveUtils.isDesktop(_context) - ? AppColor.colorBgDesktop - : Colors.white; + if (mailboxNodeSelected?.id == _mailboxNode.item.id || isHoverItem) { + return AppColor.colorBgMailboxSelected; } else { - return Colors.white; + return Colors.transparent; } } } diff --git a/lib/features/manage_account/presentation/mailbox_visibility/mailbox_visibility_controller.dart b/lib/features/manage_account/presentation/mailbox_visibility/mailbox_visibility_controller.dart index a80093797..23adc9e7a 100644 --- a/lib/features/manage_account/presentation/mailbox_visibility/mailbox_visibility_controller.dart +++ b/lib/features/manage_account/presentation/mailbox_visibility/mailbox_visibility_controller.dart @@ -12,7 +12,6 @@ import 'package:get/get.dart'; import 'package:jmap_dart_client/jmap/core/state.dart' as jmap; import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart'; import 'package:model/mailbox/expand_mode.dart'; -import 'package:model/mailbox/presentation_mailbox.dart'; import 'package:tmail_ui_user/features/base/base_mailbox_controller.dart'; import 'package:tmail_ui_user/features/mailbox/domain/model/mailbox_subscribe_action_state.dart'; import 'package:tmail_ui_user/features/mailbox/domain/model/mailbox_subscribe_state.dart'; @@ -30,7 +29,6 @@ import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_catego import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_node.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_tree_builder.dart'; import 'package:tmail_ui_user/features/mailbox_creator/domain/usecases/verify_name_interactor.dart'; -import 'package:tmail_ui_user/features/manage_account/presentation/mailbox_visibility/state/mailbox_visibility_state.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/manage_account_dashboard_controller.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; import 'package:tmail_ui_user/main/routes/route_navigation.dart'; @@ -69,13 +67,13 @@ class MailboxVisibilityController extends BaseMailboxController { @override void onData(Either newState) { super.onData(newState); - newState.fold((failure) => null, (success) { - if (success is GetAllMailboxSuccess) { + newState.fold((failure) => null, (success) async { + if (success is GetAllMailboxSuccess) { currentMailboxState = success.currentMailboxState; - _handleBuildMailboxTree(success.mailboxList); + await buildTree(success.mailboxList); } else if (success is RefreshChangesAllMailboxSuccess) { currentMailboxState = success.currentMailboxState; - refreshTree(success.mailboxList); + await refreshTree(success.mailboxList); } }); } @@ -103,12 +101,6 @@ class MailboxVisibilityController extends BaseMailboxController { super.onReady(); } - void _handleBuildMailboxTree(List mailboxList) async { - dispatchState(Right(LoadingBuildTreeMailboxVisibility())); - await buildTree(mailboxList); - dispatchState(Right(BuildTreeMailboxVisibilitySuccess())); - } - void subscribeMailbox(MailboxNode mailboxNode) { final _mailboxSubscribeState = mailboxNode.item.isSubscribedMailbox ? MailboxSubscribeState.disabled : MailboxSubscribeState.enabled; diff --git a/lib/features/manage_account/presentation/mailbox_visibility/mailbox_visibility_view.dart b/lib/features/manage_account/presentation/mailbox_visibility/mailbox_visibility_view.dart index ec5614da5..95e5c9d2b 100644 --- a/lib/features/manage_account/presentation/mailbox_visibility/mailbox_visibility_view.dart +++ b/lib/features/manage_account/presentation/mailbox_visibility/mailbox_visibility_view.dart @@ -12,7 +12,6 @@ import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_catego import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_node.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/base/setting_detail_view_builder.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/mailbox_visibility/mailbox_visibility_controller.dart'; -import 'package:tmail_ui_user/features/manage_account/presentation/mailbox_visibility/state/mailbox_visibility_state.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/mailbox_visibility/utils/mailbox_visibility_utils.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/mailbox_visibility/widgets/mailbox_visibility_folder_tile_builder.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/mailbox_visibility/widgets/mailbox_visibility_header_widget.dart'; @@ -57,17 +56,9 @@ class MailboxVisibilityView extends GetWidget Widget _buildLoadingView() { return Obx(() => controller.viewState.value.fold( (failure) => const SizedBox.shrink(), - (success) { - if (success is LoadingState || success is LoadingBuildTreeMailboxVisibility) { - return Padding( - padding: const EdgeInsets.only(top: 16), - child: loadingWidget - ); - } else { - return const SizedBox.shrink(); - } - } - )); + (success) => success is LoadingState + ? Padding(padding: const EdgeInsets.only(top: 16), child: loadingWidget) + : const SizedBox.shrink())); } Widget _buildListMailbox(BuildContext context) { diff --git a/lib/features/manage_account/presentation/mailbox_visibility/state/mailbox_visibility_state.dart b/lib/features/manage_account/presentation/mailbox_visibility/state/mailbox_visibility_state.dart deleted file mode 100644 index 15b59175b..000000000 --- a/lib/features/manage_account/presentation/mailbox_visibility/state/mailbox_visibility_state.dart +++ /dev/null @@ -1,5 +0,0 @@ -import 'package:core/presentation/state/success.dart'; - -class LoadingBuildTreeMailboxVisibility extends LoadingState {} - -class BuildTreeMailboxVisibilitySuccess extends UIState {} \ No newline at end of file diff --git a/lib/features/manage_account/presentation/mailbox_visibility/widgets/mailbox_visibility_folder_tile_builder.dart b/lib/features/manage_account/presentation/mailbox_visibility/widgets/mailbox_visibility_folder_tile_builder.dart index 70817b5c2..133455297 100644 --- a/lib/features/manage_account/presentation/mailbox_visibility/widgets/mailbox_visibility_folder_tile_builder.dart +++ b/lib/features/manage_account/presentation/mailbox_visibility/widgets/mailbox_visibility_folder_tile_builder.dart @@ -35,7 +35,7 @@ class MailBoxVisibilityFolderTileBuilder extends StatelessWidget { const SizedBox(width: 8), _buildLeadingMailboxItem(context), Expanded(child: _buildTitleFolderItem()), - if (!_mailboxNode.item.hasRole() || !_mailboxNode.item.isSubscribedMailbox) + if (!_mailboxNode.item.isDefault) _buildSubscribeButton(context), const SizedBox(width: 32), ] @@ -85,7 +85,7 @@ class MailBoxVisibilityFolderTileBuilder extends StatelessWidget { overflow: CommonTextStyle.defaultTextOverFlow, style: TextStyle( fontSize: _mailboxNode.item.isTeamMailboxes ? 16 : 15, - color: _mailboxNode.item.isSubscribedMailbox + color: _mailboxNode.item.allowedToDisplay ? Colors.black : AppColor.colorTitleAUnSubscribedMailbox, fontWeight: _mailboxNode.item.isTeamMailboxes @@ -114,7 +114,7 @@ class MailBoxVisibilityFolderTileBuilder extends StatelessWidget { _mailboxNode.item.getMailboxIcon(_imagePaths), width: 20, height: 20, - color: _mailboxNode.item.isSubscribedMailbox + color: _mailboxNode.item.allowedToDisplay ? AppColor.primaryColor : AppColor.colorIconUnSubscribedMailbox, fit: BoxFit.fill diff --git a/lib/features/search/mailbox/presentation/widgets/mailbox_searched_item_builder.dart b/lib/features/search/mailbox/presentation/widgets/mailbox_searched_item_builder.dart index a4bb9686c..cd61ab85d 100644 --- a/lib/features/search/mailbox/presentation/widgets/mailbox_searched_item_builder.dart +++ b/lib/features/search/mailbox/presentation/widgets/mailbox_searched_item_builder.dart @@ -182,7 +182,7 @@ class _MailboxSearchedItemBuilderState extends State } void _onTapMailboxAction() { - if (widget._presentationMailbox.isSubscribed?.value == true) { + if (widget._presentationMailbox.allowedToDisplay) { widget.onClickOpenMailboxAction?.call(widget._presentationMailbox); } } @@ -195,7 +195,7 @@ class _MailboxSearchedItemBuilderState extends State Widget _buildMailboxIcon() { return SvgPicture.asset( - widget._presentationMailbox.isSubscribed?.value == true + widget._presentationMailbox.allowedToDisplay ? widget._presentationMailbox.getMailboxIcon(widget._imagePaths) : widget._imagePaths.icHideFolder, width: 20, diff --git a/model/lib/extensions/list_presentation_mailbox_extension.dart b/model/lib/extensions/list_presentation_mailbox_extension.dart index 13f910515..edd00616a 100644 --- a/model/lib/extensions/list_presentation_mailbox_extension.dart +++ b/model/lib/extensions/list_presentation_mailbox_extension.dart @@ -6,6 +6,9 @@ extension ListPresentationMailboxExtension on List { List get listSubscribedMailboxes => where((mailbox) => mailbox.isSubscribedMailbox).toList(); + List get listSubscribedMailboxesAndDefaultMailboxes => + where((mailbox) => mailbox.isSubscribedMailbox || mailbox.isDefault).toList(); + List get listPersonalMailboxes => where((mailbox) => mailbox.isPersonal).toList(); } \ No newline at end of file diff --git a/model/lib/mailbox/presentation_mailbox.dart b/model/lib/mailbox/presentation_mailbox.dart index 6faa0f150..ae462c9ab 100644 --- a/model/lib/mailbox/presentation_mailbox.dart +++ b/model/lib/mailbox/presentation_mailbox.dart @@ -105,6 +105,8 @@ class PresentationMailbox with EquatableMixin { (namespace?.value.indexOf('[') ?? 0) + 1, namespace?.value.indexOf(']')); + bool get allowedToDisplay => isSubscribedMailbox || isDefault; + @override List get props => [ id,