TF-1432 [Presentation] Implement subscribe multiple mailbox
This commit is contained in:
@@ -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),
|
||||||
|
|||||||
Reference in New Issue
Block a user