TF-1432 [Presentation] Implement subscribe multiple mailbox

This commit is contained in:
dab246
2023-02-10 14:37:43 +07:00
committed by Dat Vu
parent 46d793ace3
commit fce503c9d1
6 changed files with 207 additions and 103 deletions
@@ -23,6 +23,7 @@ import 'package:tmail_ui_user/features/mailbox/domain/usecases/refresh_all_mailb
import 'package:tmail_ui_user/features/mailbox/domain/usecases/rename_mailbox_interactor.dart'; import 'package:tmail_ui_user/features/mailbox/domain/usecases/rename_mailbox_interactor.dart';
import 'package:tmail_ui_user/features/mailbox/domain/usecases/search_mailbox_interactor.dart'; import 'package:tmail_ui_user/features/mailbox/domain/usecases/search_mailbox_interactor.dart';
import 'package:tmail_ui_user/features/mailbox/domain/usecases/subscribe_mailbox_interactor.dart'; import 'package:tmail_ui_user/features/mailbox/domain/usecases/subscribe_mailbox_interactor.dart';
import 'package:tmail_ui_user/features/mailbox/domain/usecases/subscribe_multiple_mailbox_interactor.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/mailbox_controller.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/mailbox_controller.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_tree_builder.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/mailbox_creator/domain/usecases/verify_name_interactor.dart';
@@ -57,6 +58,7 @@ class MailboxBindings extends BaseBindings {
Get.find<RenameMailboxInteractor>(), Get.find<RenameMailboxInteractor>(),
Get.find<MoveMailboxInteractor>(), Get.find<MoveMailboxInteractor>(),
Get.find<SubscribeMailboxInteractor>(), Get.find<SubscribeMailboxInteractor>(),
Get.find<SubscribeMultipleMailboxInteractor>(),
Get.find<TreeBuilder>(), Get.find<TreeBuilder>(),
)); ));
} }
@@ -99,6 +101,7 @@ class MailboxBindings extends BaseBindings {
Get.lazyPut(() => RenameMailboxInteractor(Get.find<MailboxRepository>())); Get.lazyPut(() => RenameMailboxInteractor(Get.find<MailboxRepository>()));
Get.lazyPut(() => MoveMailboxInteractor(Get.find<MailboxRepository>())); Get.lazyPut(() => MoveMailboxInteractor(Get.find<MailboxRepository>()));
Get.lazyPut(() => SubscribeMailboxInteractor(Get.find<MailboxRepository>())); Get.lazyPut(() => SubscribeMailboxInteractor(Get.find<MailboxRepository>()));
Get.lazyPut(() => SubscribeMultipleMailboxInteractor(Get.find<MailboxRepository>()));
} }
@override @override
@@ -32,6 +32,8 @@ import 'package:tmail_ui_user/features/mailbox/domain/model/mailbox_subscribe_st
import 'package:tmail_ui_user/features/mailbox/domain/model/move_mailbox_request.dart'; import 'package:tmail_ui_user/features/mailbox/domain/model/move_mailbox_request.dart';
import 'package:tmail_ui_user/features/mailbox/domain/model/rename_mailbox_request.dart'; import 'package:tmail_ui_user/features/mailbox/domain/model/rename_mailbox_request.dart';
import 'package:tmail_ui_user/features/mailbox/domain/model/subscribe_mailbox_request.dart'; import 'package:tmail_ui_user/features/mailbox/domain/model/subscribe_mailbox_request.dart';
import 'package:tmail_ui_user/features/mailbox/domain/model/subscribe_multiple_mailbox_request.dart';
import 'package:tmail_ui_user/features/mailbox/domain/model/subscribe_request.dart';
import 'package:tmail_ui_user/features/mailbox/domain/state/create_new_mailbox_state.dart'; import 'package:tmail_ui_user/features/mailbox/domain/state/create_new_mailbox_state.dart';
import 'package:tmail_ui_user/features/mailbox/domain/state/delete_multiple_mailbox_state.dart'; import 'package:tmail_ui_user/features/mailbox/domain/state/delete_multiple_mailbox_state.dart';
import 'package:tmail_ui_user/features/mailbox/domain/state/get_all_mailboxes_state.dart'; import 'package:tmail_ui_user/features/mailbox/domain/state/get_all_mailboxes_state.dart';
@@ -41,6 +43,7 @@ import 'package:tmail_ui_user/features/mailbox/domain/state/refresh_changes_all_
import 'package:tmail_ui_user/features/mailbox/domain/state/rename_mailbox_state.dart'; import 'package:tmail_ui_user/features/mailbox/domain/state/rename_mailbox_state.dart';
import 'package:tmail_ui_user/features/mailbox/domain/state/search_mailbox_state.dart'; import 'package:tmail_ui_user/features/mailbox/domain/state/search_mailbox_state.dart';
import 'package:tmail_ui_user/features/mailbox/domain/state/subscribe_mailbox_state.dart'; import 'package:tmail_ui_user/features/mailbox/domain/state/subscribe_mailbox_state.dart';
import 'package:tmail_ui_user/features/mailbox/domain/state/subscribe_multiple_mailbox_state.dart';
import 'package:tmail_ui_user/features/mailbox/domain/usecases/create_new_mailbox_interactor.dart'; import 'package:tmail_ui_user/features/mailbox/domain/usecases/create_new_mailbox_interactor.dart';
import 'package:tmail_ui_user/features/mailbox/domain/usecases/delete_multiple_mailbox_interactor.dart'; import 'package:tmail_ui_user/features/mailbox/domain/usecases/delete_multiple_mailbox_interactor.dart';
import 'package:tmail_ui_user/features/mailbox/domain/usecases/get_all_mailbox_interactor.dart'; import 'package:tmail_ui_user/features/mailbox/domain/usecases/get_all_mailbox_interactor.dart';
@@ -49,7 +52,9 @@ import 'package:tmail_ui_user/features/mailbox/domain/usecases/refresh_all_mailb
import 'package:tmail_ui_user/features/mailbox/domain/usecases/rename_mailbox_interactor.dart'; import 'package:tmail_ui_user/features/mailbox/domain/usecases/rename_mailbox_interactor.dart';
import 'package:tmail_ui_user/features/mailbox/domain/usecases/search_mailbox_interactor.dart'; import 'package:tmail_ui_user/features/mailbox/domain/usecases/search_mailbox_interactor.dart';
import 'package:tmail_ui_user/features/mailbox/domain/usecases/subscribe_mailbox_interactor.dart'; import 'package:tmail_ui_user/features/mailbox/domain/usecases/subscribe_mailbox_interactor.dart';
import 'package:tmail_ui_user/features/mailbox/domain/usecases/subscribe_multiple_mailbox_interactor.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/action/mailbox_ui_action.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/action/mailbox_ui_action.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/extensions/list_mailbox_node_extension.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_actions.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.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_categories_expand_mode.dart';
@@ -98,6 +103,7 @@ class MailboxController extends BaseMailboxController {
final RenameMailboxInteractor _renameMailboxInteractor; final RenameMailboxInteractor _renameMailboxInteractor;
final MoveMailboxInteractor _moveMailboxInteractor; final MoveMailboxInteractor _moveMailboxInteractor;
final SubscribeMailboxInteractor _subscribeMailboxInteractor; final SubscribeMailboxInteractor _subscribeMailboxInteractor;
final SubscribeMultipleMailboxInteractor _subscribeMultipleMailboxInteractor;
final listMailboxSearched = <PresentationMailbox>[].obs; final listMailboxSearched = <PresentationMailbox>[].obs;
final searchState = SearchState.initial().obs; final searchState = SearchState.initial().obs;
@@ -125,6 +131,7 @@ class MailboxController extends BaseMailboxController {
this._renameMailboxInteractor, this._renameMailboxInteractor,
this._moveMailboxInteractor, this._moveMailboxInteractor,
this._subscribeMailboxInteractor, this._subscribeMailboxInteractor,
this._subscribeMultipleMailboxInteractor,
treeBuilder, treeBuilder,
) : super(treeBuilder); ) : super(treeBuilder);
@@ -200,7 +207,11 @@ class MailboxController extends BaseMailboxController {
} else if (success is MoveMailboxSuccess) { } else if (success is MoveMailboxSuccess) {
_moveMailboxSuccess(success); _moveMailboxSuccess(success);
} else if (success is SubscribeMailboxSuccess) { } else if (success is SubscribeMailboxSuccess) {
subscribeMailboxSuccess(success); _handleUnsubscribeMailboxSuccess(success);
} else if (success is SubscribeMultipleMailboxAllSuccess) {
_handleUnsubscribeMultipleMailboxAllSuccess(success);
} else if (success is SubscribeMultipleMailboxHasSomeSuccess) {
_handleUnsubscribeMultipleMailboxHasSomeSuccess(success);
} }
} }
); );
@@ -1154,10 +1165,7 @@ class MailboxController extends BaseMailboxController {
mailboxDashBoardController.storeSpamReportStateAction(); mailboxDashBoardController.storeSpamReportStateAction();
break; break;
case MailboxActions.disableMailbox: case MailboxActions.disableMailbox:
subscribeMailboxAction(SubscribeMailboxRequest( _unsubscribeMailboxAction(mailbox.id);
mailbox.id,
MailboxSubscribeState.disabled,
MailboxSubscribeAction.unSubscribe));
break; break;
default: default:
break; break;
@@ -1228,43 +1236,137 @@ class MailboxController extends BaseMailboxController {
await refreshTree(_mailboxList); await refreshTree(_mailboxList);
} }
void subscribeMailboxAction(SubscribeMailboxRequest subscribeMailboxRequest) { SubscribeRequest? _generateSubscribeRequest(
MailboxId mailboxId,
MailboxSubscribeState subscribeState,
MailboxSubscribeAction subscribeAction
) {
final mailboxNode = findMailboxNodeById(mailboxId);
if (mailboxNode != null) {
if (mailboxNode.hasChildren()) {
final listDescendantMailboxIds = mailboxNode.descendantsAsList().mailboxIds;
return SubscribeMultipleMailboxRequest(mailboxId, listDescendantMailboxIds, subscribeState, subscribeAction);
} else {
return SubscribeMailboxRequest(mailboxId, subscribeState, subscribeAction);
}
}
return null;
}
void _unsubscribeMailboxAction(MailboxId mailboxId) {
final _accountId = mailboxDashBoardController.accountId.value; final _accountId = mailboxDashBoardController.accountId.value;
if (_accountId != null) { if (_accountId != null) {
consumeState(_subscribeMailboxInteractor.execute( final subscribeRequest = _generateSubscribeRequest(
_accountId, mailboxId,
subscribeMailboxRequest MailboxSubscribeState.disabled,
)); MailboxSubscribeAction.unSubscribe
);
if (subscribeRequest is SubscribeMultipleMailboxRequest) {
consumeState(_subscribeMultipleMailboxInteractor.execute(_accountId, subscribeRequest));
} else if (subscribeRequest is SubscribeMailboxRequest) {
consumeState(_subscribeMailboxInteractor.execute(_accountId, subscribeRequest));
}
} }
} }
void subscribeMailboxSuccess(SubscribeMailboxSuccess subscribeMailboxSuccess) { void _handleUnsubscribeMailboxSuccess(SubscribeMailboxSuccess success) {
if(subscribeMailboxSuccess.mailboxSubscribeStateAction == MailboxSubscribeAction.unSubscribe if (success.subscribeAction == MailboxSubscribeAction.unSubscribe) {
&& currentOverlayContext != null _showToastSubscribeMailboxSuccess(success.mailboxId);
&& currentContext != null) {
_appToast.showBottomToast( if (success.mailboxId == selectedMailbox?.id) {
currentOverlayContext!, _switchBackToMailboxDefault();
AppLocalizations.of(currentContext!).toastMsgHideMailboxSuccess, }
actionName: AppLocalizations.of(currentContext!).undo,
onActionClick: () {
subscribeMailboxAction(SubscribeMailboxRequest(
subscribeMailboxSuccess.mailboxId,
MailboxSubscribeState.enabled,
MailboxSubscribeAction.undo));
},
leadingIcon: SvgPicture.asset(
_imagePaths.icFolderMailbox,
width: 24,
height: 24,
color: Colors.white,
fit: BoxFit.fill),
backgroundColor: AppColor.toastSuccessBackgroundColor,
textColor: Colors.white,
textActionColor: Colors.white,
actionIcon: SvgPicture.asset(_imagePaths.icUndo),
maxWidth: _responsiveUtils.getMaxWidthToast(currentContext!));
} }
refreshMailboxChanges(currentMailboxState: subscribeMailboxSuccess.currentMailboxState); refreshMailboxChanges(currentMailboxState: success.currentMailboxState);
}
void _handleUnsubscribeMultipleMailboxAllSuccess(SubscribeMultipleMailboxAllSuccess success) {
if(success.subscribeAction == MailboxSubscribeAction.unSubscribe) {
_showToastSubscribeMailboxSuccess(success.parentMailboxId);
if (success.mailboxIdsSubscribe.contains(selectedMailbox?.id)) {
_switchBackToMailboxDefault();
}
}
refreshMailboxChanges(currentMailboxState: success.currentMailboxState);
}
void _handleUnsubscribeMultipleMailboxHasSomeSuccess(SubscribeMultipleMailboxHasSomeSuccess success) {
if(success.subscribeAction == MailboxSubscribeAction.unSubscribe) {
_showToastSubscribeMailboxSuccess(success.parentMailboxId);
if (success.mailboxIdsSubscribe.contains(selectedMailbox?.id)) {
_switchBackToMailboxDefault();
}
}
refreshMailboxChanges(currentMailboxState: success.currentMailboxState);
}
void _showToastSubscribeMailboxSuccess(MailboxId mailboxId) {
if (currentOverlayContext != null && currentContext != null) {
_appToast.showBottomToast(
currentOverlayContext!,
AppLocalizations.of(currentContext!).toastMsgHideMailboxSuccess,
actionName: AppLocalizations.of(currentContext!).undo,
onActionClick: () => _undoUnsubscribeMailboxAction(mailboxId),
leadingIcon: SvgPicture.asset(
_imagePaths.icFolderMailbox,
width: 24,
height: 24,
color: Colors.white,
fit: BoxFit.fill
),
backgroundColor: AppColor.toastSuccessBackgroundColor,
textColor: Colors.white,
textActionColor: Colors.white,
actionIcon: SvgPicture.asset(_imagePaths.icUndo),
maxWidth: _responsiveUtils.getMaxWidthToast(currentContext!)
);
}
}
void _undoUnsubscribeMailboxAction(MailboxId mailboxId) {
final _accountId = mailboxDashBoardController.accountId.value;
if (_accountId != null) {
final subscribeRequest = _generateSubscribeRequest(
mailboxId,
MailboxSubscribeState.enabled,
MailboxSubscribeAction.undo
);
if (subscribeRequest is SubscribeMultipleMailboxRequest) {
consumeState(_subscribeMultipleMailboxInteractor.execute(_accountId, subscribeRequest));
} else if (subscribeRequest is SubscribeMailboxRequest) {
consumeState(_subscribeMailboxInteractor.execute(_accountId, subscribeRequest));
}
}
}
MailboxActions _mailboxActionForSpam() {
return mailboxDashBoardController.enableSpamReport
? MailboxActions.disableSpamReport
: MailboxActions.enableSpamReport;
}
List<MailboxActions> listActionForMailbox(PresentationMailbox mailbox) {
return [
if (BuildUtils.isWeb)
MailboxActions.openInNewTab,
if (mailbox.isSpam)
_mailboxActionForSpam(),
MailboxActions.markAsRead,
MailboxActions.move,
MailboxActions.rename,
MailboxActions.delete,
if (mailbox.isSupportedDisableMailbox)
MailboxActions.disableMailbox
];
} }
} }
@@ -329,51 +329,70 @@ class MailboxView extends GetWidget<MailboxController> {
]); ]);
} }
void _openBottomSheetSpamMenuAction(BuildContext context, PresentationMailbox mailbox) { MailboxActions _mailboxActionForSpam() {
final _mailboxActionsSupported = [ return controller.mailboxDashBoardController.enableSpamReport
MailboxActions.disableMailbox ? MailboxActions.disableSpamReport
: MailboxActions.enableSpamReport;
}
List<MailboxActions> _listActionForMailbox(PresentationMailbox mailbox) {
return [
if (BuildUtils.isWeb)
MailboxActions.openInNewTab,
if (mailbox.isSpam)
_mailboxActionForSpam(),
MailboxActions.markAsRead,
MailboxActions.move,
MailboxActions.rename,
MailboxActions.delete,
if (mailbox.isSupportedDisableMailbox)
MailboxActions.disableMailbox
]; ];
}
if (mailbox.isSpam) { void _openBottomSheetMailboxMenuAction(BuildContext context, PresentationMailbox mailbox) {
_mailboxActionsSupported.add(controller.mailboxDashBoardController.enableSpamReport final mailboxActionsSupported = _listActionForMailbox(mailbox);
? MailboxActions.disableSpamReport
: MailboxActions.enableSpamReport);
}
final listContextMailboxPopupMenuItemAction = _mailboxActionsSupported final listContextMailboxPopupMenuItemAction = mailboxActionsSupported
.map((action) => ContextMenuItemMailboxAction(action, action.getContextMenuItemState(mailbox))) .map((action) => ContextMenuItemMailboxAction(action, action.getContextMenuItemState(mailbox)))
.toList(); .toList();
controller.openContextMenuAction( controller.openContextMenuAction(
context,
_bottomSheetMailboxActionTiles(
context, context,
_bottomSheetIdentityActionTiles(context, mailbox, listContextMailboxPopupMenuItemAction)); mailbox,
listContextMailboxPopupMenuItemAction
)
);
} }
List<Widget> _bottomSheetIdentityActionTiles( List<Widget> _bottomSheetMailboxActionTiles(
BuildContext context, BuildContext context,
PresentationMailbox mailbox, PresentationMailbox mailbox,
List<ContextMenuItemMailboxAction> contextMenuActions) { List<ContextMenuItemMailboxAction> contextMenuActions
) {
return contextMenuActions return contextMenuActions
.map((action) => _openBottomSheetSpamMenuActionTile(context, action, mailbox)) .map((action) => _openBottomSheetMailboxMenuActionTile(context, action, mailbox))
.toList(); .toList();
} }
Widget _openBottomSheetSpamMenuActionTile( Widget _openBottomSheetMailboxMenuActionTile(
BuildContext context, BuildContext context,
ContextMenuItemMailboxAction contextMenuItem, ContextMenuItemMailboxAction contextMenuItem,
PresentationMailbox mailbox) { PresentationMailbox mailbox
) {
return (MailboxBottomSheetActionTileBuilder( return (MailboxBottomSheetActionTileBuilder(
Key('${contextMenuItem.action.name}_action'), Key('${contextMenuItem.action.name}_action'),
SvgPicture.asset( SvgPicture.asset(
contextMenuItem.action.getContextMenuIcon(_imagePaths), contextMenuItem.action.getContextMenuIcon(_imagePaths),
color: AppColor.primaryColor), color: AppColor.primaryColor),
contextMenuItem.action.getTitleContextMenu(context), contextMenuItem.action.getTitleContextMenu(context),
mailbox, mailbox,
absorbing: !contextMenuItem.isActivated, absorbing: !contextMenuItem.isActivated,
opacity: !contextMenuItem.isActivated) opacity: !contextMenuItem.isActivated)
..onActionClick((mailbox) => controller.handleMailboxAction( ..onActionClick((mailbox) => controller.handleMailboxAction(context, contextMenuItem.action, mailbox)))
context, contextMenuItem.action, mailbox))) .build();
.build();
} }
List<Widget> _buildListChildTileWidget(BuildContext context, MailboxNode parentNode, {MailboxNode? lastNode}) { List<Widget> _buildListChildTileWidget(BuildContext context, MailboxNode parentNode, {MailboxNode? lastNode}) {
@@ -385,7 +404,7 @@ class MailboxView extends GetWidget<MailboxController> {
isExpanded: mailboxNode.expandMode == ExpandMode.EXPAND, isExpanded: mailboxNode.expandMode == ExpandMode.EXPAND,
parent: Obx(() => (MailBoxFolderTileBuilder(context, _imagePaths, mailboxNode, lastNode: lastNode, parent: Obx(() => (MailBoxFolderTileBuilder(context, _imagePaths, mailboxNode, lastNode: lastNode,
allSelectMode: controller.currentSelectMode.value) allSelectMode: controller.currentSelectMode.value)
..addOnLongPressMailboxFolderClick((mailboxNode) => _openBottomSheetSpamMenuAction(context, mailboxNode.item)) ..addOnLongPressMailboxFolderClick((mailboxNode) => _openBottomSheetMailboxMenuAction(context, mailboxNode.item))
..addOnOpenMailboxFolderClick((mailboxNode) => controller.openMailbox(context, mailboxNode.item)) ..addOnOpenMailboxFolderClick((mailboxNode) => controller.openMailbox(context, mailboxNode.item))
..addOnExpandFolderActionClick((mailboxNode) => controller.toggleMailboxFolder(mailboxNode)) ..addOnExpandFolderActionClick((mailboxNode) => controller.toggleMailboxFolder(mailboxNode))
..addOnSelectMailboxFolderClick((mailboxNode) => controller.selectMailboxNode(mailboxNode))) ..addOnSelectMailboxFolderClick((mailboxNode) => controller.selectMailboxNode(mailboxNode)))
@@ -394,7 +413,7 @@ class MailboxView extends GetWidget<MailboxController> {
).build() ).build()
: Obx(() => (MailBoxFolderTileBuilder(context, _imagePaths, mailboxNode, lastNode: lastNode, : Obx(() => (MailBoxFolderTileBuilder(context, _imagePaths, mailboxNode, lastNode: lastNode,
allSelectMode: controller.currentSelectMode.value) allSelectMode: controller.currentSelectMode.value)
..addOnLongPressMailboxFolderClick((mailboxNode) => _openBottomSheetSpamMenuAction(context, mailboxNode.item)) ..addOnLongPressMailboxFolderClick((mailboxNode) => _openBottomSheetMailboxMenuAction(context, mailboxNode.item))
..addOnOpenMailboxFolderClick((mailboxNode) => controller.openMailbox(context, mailboxNode.item)) ..addOnOpenMailboxFolderClick((mailboxNode) => controller.openMailbox(context, mailboxNode.item))
..addOnSelectMailboxFolderClick((mailboxNode) => controller.selectMailboxNode(mailboxNode))) ..addOnSelectMailboxFolderClick((mailboxNode) => controller.selectMailboxNode(mailboxNode)))
.build()) .build())
@@ -449,25 +449,7 @@ class MailboxView extends GetWidget<MailboxController> with AppLoaderMixin, Popu
RelativeRect position, RelativeRect position,
PresentationMailbox mailbox PresentationMailbox mailbox
) { ) {
final mailboxActionsSupported = [ final mailboxActionsSupported = controller.listActionForMailbox(mailbox);
MailboxActions.openInNewTab,
MailboxActions.markAsRead,
MailboxActions.move,
MailboxActions.rename,
MailboxActions.delete,
];
if (mailbox.isShowDisableMailbox) {
mailboxActionsSupported.add(MailboxActions.disableMailbox);
}
if (mailbox.isSpam) {
mailboxActionsSupported.insert(
1,
controller.mailboxDashBoardController.enableSpamReport
? MailboxActions.disableSpamReport
: MailboxActions.enableSpamReport);
}
final listContextMenuItemAction = mailboxActionsSupported final listContextMenuItemAction = mailboxActionsSupported
.map((action) => ContextMenuItemMailboxAction( .map((action) => ContextMenuItemMailboxAction(
@@ -146,21 +146,23 @@ extension MailboxActionsExtension on MailboxActions {
case MailboxActions.openInNewTab: case MailboxActions.openInNewTab:
case MailboxActions.disableSpamReport: case MailboxActions.disableSpamReport:
case MailboxActions.enableSpamReport: case MailboxActions.enableSpamReport:
return ContextMenuItemState.activated; return mailbox.isPersonal
? ContextMenuItemState.activated
: ContextMenuItemState.deactivated;
case MailboxActions.disableMailbox: case MailboxActions.disableMailbox:
return mailbox.hasRole() return mailbox.hasRole()
? ContextMenuItemState.deactivated ? ContextMenuItemState.deactivated
: ContextMenuItemState.activated; : ContextMenuItemState.activated;
case MailboxActions.markAsRead: case MailboxActions.markAsRead:
return mailbox.getCountUnReadEmails().isNotEmpty return mailbox.getCountUnReadEmails().isNotEmpty
? ContextMenuItemState.activated ? ContextMenuItemState.activated
: ContextMenuItemState.deactivated; : ContextMenuItemState.deactivated;
case MailboxActions.move: case MailboxActions.move:
case MailboxActions.rename: case MailboxActions.rename:
case MailboxActions.delete: case MailboxActions.delete:
return mailbox.hasRole() return !mailbox.hasRole() && mailbox.isPersonal
? ContextMenuItemState.deactivated ? ContextMenuItemState.activated
: ContextMenuItemState.activated; : ContextMenuItemState.deactivated;
default: default:
return ContextMenuItemState.deactivated; return ContextMenuItemState.deactivated;
} }
@@ -131,11 +131,7 @@ class MailBoxFolderTileBuilder {
child: Opacity( child: Opacity(
opacity: _mailboxNode.isActivated ? 1.0 : 0.3, opacity: _mailboxNode.isActivated ? 1.0 : 0.3,
child: InkWell( child: InkWell(
onLongPress: () { onLongPress: () => _onLongPressMailboxFolderClick?.call(_mailboxNode),
if(_mailboxNode.item.isShowDisableMailbox || _mailboxNode.item.isSpam) {
_onLongPressMailboxFolderClick?.call(_mailboxNode);
}
},
onTap: () => allSelectMode == SelectMode.ACTIVE onTap: () => allSelectMode == SelectMode.ACTIVE
? _onSelectMailboxFolderClick?.call(_mailboxNode) ? _onSelectMailboxFolderClick?.call(_mailboxNode)
: _onOpenMailboxFolderClick?.call(_mailboxNode), : _onOpenMailboxFolderClick?.call(_mailboxNode),