TF-1311: [Presentation] Implement hide mailbox in presentation

This commit is contained in:
HuyNguyen
2023-02-07 13:23:33 +07:00
committed by Dat Vu
parent 2f3b1b6a87
commit 6f32bf4ba3
11 changed files with 102 additions and 43 deletions
@@ -296,7 +296,7 @@ class MailboxAPI with HandleSetErrorMixin {
final setMailboxMethod = SetMailboxMethod(accountId) final setMailboxMethod = SetMailboxMethod(accountId)
..addUpdates({ ..addUpdates({
request.mailboxId.id : PatchObject({ request.mailboxId.id : PatchObject({
'isSubscribed': request.newState == MailboxSubscribeState.disabled ? true : false 'isSubscribed': request.newState == MailboxSubscribeState.disabled ? false : true
}) })
}); });
@@ -1,13 +1,4 @@
enum MailboxSubscribeState { enum MailboxSubscribeState {
enabled, enabled,
disabled; disabled
String get keyValue {
switch(this) {
case MailboxSubscribeState.enabled:
return 'enabled';
case MailboxSubscribeState.disabled:
return 'disabled';
}
}
} }
@@ -1,15 +1,19 @@
import 'package:core/core.dart'; import 'package:core/core.dart';
import 'package:tmail_ui_user/features/base/state/ui_action_state.dart';
import 'package:jmap_dart_client/jmap/core/state.dart' as jmap;
class LoadingSubscribeMailbox extends UIState {} class LoadingSubscribeMailbox extends UIState {}
class SubscribeMailboxSuccess extends UIState { class SubscribeMailboxSuccess extends UIActionState {
final bool subscribeMailbox; SubscribeMailboxSuccess({
jmap.State? currentEmailState,
SubscribeMailboxSuccess(this.subscribeMailbox); jmap.State? currentMailboxState,
}) : super(currentEmailState, currentMailboxState);
@override @override
List<Object?> get props => [subscribeMailbox]; List<Object?> get props => [];
} }
class SubscribeMailboxFailure extends FeatureFailure { class SubscribeMailboxFailure extends FeatureFailure {
@@ -6,18 +6,25 @@ import 'package:tmail_ui_user/features/mailbox/domain/model/subscribe_mailbox_re
import 'package:tmail_ui_user/features/mailbox/domain/repository/mailbox_repository.dart'; import 'package:tmail_ui_user/features/mailbox/domain/repository/mailbox_repository.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';
class SearchMailboxInteractor { class SubscribeMailboxInteractor {
final MailboxRepository _mailboxRepository; final MailboxRepository _mailboxRepository;
SearchMailboxInteractor(this._mailboxRepository); SubscribeMailboxInteractor(this._mailboxRepository);
Stream<Either<Failure, Success>> execute(AccountId accountId, SubscribeMailboxRequest request) async* { Stream<Either<Failure, Success>> execute(AccountId accountId, SubscribeMailboxRequest request) async* {
try { try {
yield Right<Failure, Success>(LoadingSubscribeMailbox()); yield Right<Failure, Success>(LoadingSubscribeMailbox());
final resultList = await _mailboxRepository.subscribeMailbox(accountId, request); final currentMailboxState = await _mailboxRepository.getMailboxState();
final result = await _mailboxRepository.subscribeMailbox(accountId, request);
if (result) {
yield Right<Failure, Success>(SubscribeMailboxSuccess(currentMailboxState: currentMailboxState));
} else {
yield Left<Failure, Success>(SubscribeMailboxFailure(null));
}
yield Right<Failure, Success>(SubscribeMailboxSuccess(resultList));
} catch (exception) { } catch (exception) {
yield Left<Failure, Success>(SubscribeMailboxFailure(exception)); yield Left<Failure, Success>(SubscribeMailboxFailure(exception));
} }
@@ -22,6 +22,7 @@ import 'package:tmail_ui_user/features/mailbox/domain/usecases/move_mailbox_inte
import 'package:tmail_ui_user/features/mailbox/domain/usecases/refresh_all_mailbox_interactor.dart'; import 'package:tmail_ui_user/features/mailbox/domain/usecases/refresh_all_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/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/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';
@@ -55,6 +56,7 @@ class MailboxBindings extends BaseBindings {
Get.find<VerifyNameInteractor>(), Get.find<VerifyNameInteractor>(),
Get.find<RenameMailboxInteractor>(), Get.find<RenameMailboxInteractor>(),
Get.find<MoveMailboxInteractor>(), Get.find<MoveMailboxInteractor>(),
Get.find<SubscribeMailboxInteractor>(),
Get.find<TreeBuilder>(), Get.find<TreeBuilder>(),
)); ));
} }
@@ -96,6 +98,7 @@ class MailboxBindings extends BaseBindings {
Get.lazyPut(() => VerifyNameInteractor()); Get.lazyPut(() => VerifyNameInteractor());
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>()));
} }
@override @override
@@ -27,8 +27,10 @@ import 'package:tmail_ui_user/features/email/domain/state/delete_multiple_emails
import 'package:tmail_ui_user/features/email/domain/state/mark_as_email_read_state.dart'; import 'package:tmail_ui_user/features/email/domain/state/mark_as_email_read_state.dart';
import 'package:tmail_ui_user/features/email/domain/state/move_to_mailbox_state.dart'; import 'package:tmail_ui_user/features/email/domain/state/move_to_mailbox_state.dart';
import 'package:tmail_ui_user/features/mailbox/domain/model/create_new_mailbox_request.dart'; import 'package:tmail_ui_user/features/mailbox/domain/model/create_new_mailbox_request.dart';
import 'package:tmail_ui_user/features/mailbox/domain/model/mailbox_subscribe_state.dart';
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/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';
@@ -37,6 +39,7 @@ import 'package:tmail_ui_user/features/mailbox/domain/state/move_mailbox_state.d
import 'package:tmail_ui_user/features/mailbox/domain/state/refresh_changes_all_mailboxes_state.dart'; import 'package:tmail_ui_user/features/mailbox/domain/state/refresh_changes_all_mailboxes_state.dart';
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/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';
@@ -44,6 +47,7 @@ import 'package:tmail_ui_user/features/mailbox/domain/usecases/move_mailbox_inte
import 'package:tmail_ui_user/features/mailbox/domain/usecases/refresh_all_mailbox_interactor.dart'; import 'package:tmail_ui_user/features/mailbox/domain/usecases/refresh_all_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/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/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/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';
@@ -92,6 +96,7 @@ class MailboxController extends BaseMailboxController {
final VerifyNameInteractor _verifyNameInteractor; final VerifyNameInteractor _verifyNameInteractor;
final RenameMailboxInteractor _renameMailboxInteractor; final RenameMailboxInteractor _renameMailboxInteractor;
final MoveMailboxInteractor _moveMailboxInteractor; final MoveMailboxInteractor _moveMailboxInteractor;
final SubscribeMailboxInteractor _subscribeMailboxInteractor;
final listMailboxSearched = <PresentationMailbox>[].obs; final listMailboxSearched = <PresentationMailbox>[].obs;
final searchState = SearchState.initial().obs; final searchState = SearchState.initial().obs;
@@ -118,6 +123,7 @@ class MailboxController extends BaseMailboxController {
this._verifyNameInteractor, this._verifyNameInteractor,
this._renameMailboxInteractor, this._renameMailboxInteractor,
this._moveMailboxInteractor, this._moveMailboxInteractor,
this._subscribeMailboxInteractor,
treeBuilder, treeBuilder,
) : super(treeBuilder); ) : super(treeBuilder);
@@ -156,7 +162,7 @@ class MailboxController extends BaseMailboxController {
_buildMailboxTreeHasSubscribed(success.mailboxList); _buildMailboxTreeHasSubscribed(success.mailboxList);
} else if (success is RefreshChangesAllMailboxSuccess) { } else if (success is RefreshChangesAllMailboxSuccess) {
_currentMailboxState = success.currentMailboxState; _currentMailboxState = success.currentMailboxState;
await refreshTree(success.mailboxList); _refreshMailboxTreeHasSubscribed(success.mailboxList);
} }
}); });
} }
@@ -192,6 +198,8 @@ class MailboxController extends BaseMailboxController {
refreshMailboxChanges(currentMailboxState: success.currentMailboxState); refreshMailboxChanges(currentMailboxState: success.currentMailboxState);
} else if (success is MoveMailboxSuccess) { } else if (success is MoveMailboxSuccess) {
_moveMailboxSuccess(success); _moveMailboxSuccess(success);
} else if (success is SubscribeMailboxSuccess){
refreshMailboxChanges(currentMailboxState: success.currentMailboxState);
} }
} }
); );
@@ -1142,7 +1150,10 @@ class MailboxController extends BaseMailboxController {
case MailboxActions.disableSpamReport: case MailboxActions.disableSpamReport:
case MailboxActions.enableSpamReport: case MailboxActions.enableSpamReport:
mailboxDashBoardController.storeSpamReportStateAction(); mailboxDashBoardController.storeSpamReportStateAction();
return; break;
case MailboxActions.disableMailbox:
subscribeMailboxAction(mailbox);
break;
default: default:
break; break;
} }
@@ -1206,4 +1217,19 @@ class MailboxController extends BaseMailboxController {
final _mailboxList = mailboxList.where((mailbox) => mailbox.isSubscribed?.value == true).toList(); final _mailboxList = mailboxList.where((mailbox) => mailbox.isSubscribed?.value == true).toList();
await buildTree(_mailboxList); await buildTree(_mailboxList);
} }
void _refreshMailboxTreeHasSubscribed(List<PresentationMailbox> mailboxList) async {
final _mailboxList = mailboxList.where((mailbox) => mailbox.isSubscribed?.value == true).toList();
await refreshTree(_mailboxList);
}
void subscribeMailboxAction(PresentationMailbox mailboxSelected) {
final _accountId = mailboxDashBoardController.accountId.value;
if(_accountId != null) {
consumeState(_subscribeMailboxInteractor.execute(_accountId, SubscribeMailboxRequest(
mailboxSelected.id,
MailboxSubscribeState.disabled,
)));
}
}
} }
@@ -331,11 +331,15 @@ class MailboxView extends GetWidget<MailboxController> {
void _openBottomSheetSpamMenuAction(BuildContext context, PresentationMailbox mailbox) { void _openBottomSheetSpamMenuAction(BuildContext context, PresentationMailbox mailbox) {
final _spamActionsSupported = [ final _spamActionsSupported = [
controller.mailboxDashBoardController.enableSpamReport MailboxActions.disableMailbox
? MailboxActions.disableSpamReport
: MailboxActions.enableSpamReport
]; ];
if (mailbox.isSpam) {
_spamActionsSupported.add(controller.mailboxDashBoardController.enableSpamReport
? MailboxActions.disableSpamReport
: MailboxActions.enableSpamReport);
}
final listContextSpamPopupMenuItemAction = _spamActionsSupported final listContextSpamPopupMenuItemAction = _spamActionsSupported
.map((action) => ContextMenuItemMailboxAction(action, action.getContextMenuItemState(mailbox))) .map((action) => ContextMenuItemMailboxAction(action, action.getContextMenuItemState(mailbox)))
.toList(); .toList();
@@ -381,6 +385,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))
..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)))
@@ -389,7 +394,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)
..addOnLongPressSpamReport((mailboxNode) => _openBottomSheetSpamMenuAction(context, mailboxNode.item)) ..addOnLongPressMailboxFolderClick((mailboxNode) => _openBottomSheetSpamMenuAction(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())
@@ -205,14 +205,22 @@ class MailboxView extends GetWidget<MailboxController> with AppLoaderMixin, Popu
]), ]),
), ),
const SizedBox(height: 8), const SizedBox(height: 8),
_buildHeaderMailboxCategory(context, MailboxCategories.personalMailboxes),
Obx(() => controller.personalMailboxHasChild Obx(() => controller.personalMailboxHasChild
? _buildMailboxCategory(context, MailboxCategories.personalMailboxes, controller.personalRootNode) ? Column(
children: [
_buildHeaderMailboxCategory(context, MailboxCategories.personalMailboxes),
_buildMailboxCategory(context, MailboxCategories.personalMailboxes, controller.personalRootNode),
],
)
: const SizedBox.shrink()), : const SizedBox.shrink()),
const SizedBox(height: 8), const SizedBox(height: 8),
_buildHeaderMailboxCategory(context, MailboxCategories.teamMailboxes),
Obx(() => controller.teamMailboxesHasChild Obx(() => controller.teamMailboxesHasChild
? _buildMailboxCategory(context, MailboxCategories.teamMailboxes, controller.teamMailboxesRootNode) ? Column(
children: [
_buildHeaderMailboxCategory(context, MailboxCategories.teamMailboxes),
_buildMailboxCategory(context, MailboxCategories.teamMailboxes, controller.teamMailboxesRootNode),
],
)
: const SizedBox.shrink()), : const SizedBox.shrink()),
]) ])
), ),
@@ -446,9 +454,13 @@ class MailboxView extends GetWidget<MailboxController> with AppLoaderMixin, Popu
MailboxActions.markAsRead, MailboxActions.markAsRead,
MailboxActions.move, MailboxActions.move,
MailboxActions.rename, MailboxActions.rename,
MailboxActions.delete MailboxActions.delete,
]; ];
if(mailbox.isShowDisableMailbox) {
mailboxActionsSupported.add(MailboxActions.disableMailbox);
}
if (mailbox.isSpam) { if (mailbox.isSpam) {
mailboxActionsSupported.insert( mailboxActionsSupported.insert(
1, 1,
@@ -16,7 +16,8 @@ enum MailboxActions {
selectForRuleAction, selectForRuleAction,
openInNewTab, openInNewTab,
disableSpamReport, disableSpamReport,
enableSpamReport enableSpamReport,
disableMailbox
} }
extension MailboxActionsExtension on MailboxActions { extension MailboxActionsExtension on MailboxActions {
@@ -52,6 +53,8 @@ extension MailboxActionsExtension on MailboxActions {
return AppLocalizations.of(context).rename_mailbox; return AppLocalizations.of(context).rename_mailbox;
case MailboxActions.delete: case MailboxActions.delete:
return AppLocalizations.of(context).deleteMailbox; return AppLocalizations.of(context).deleteMailbox;
case MailboxActions.disableMailbox:
return AppLocalizations.of(context).hideMailBoxes;
default: default:
return ''; return '';
} }
@@ -73,6 +76,8 @@ extension MailboxActionsExtension on MailboxActions {
return imagePaths.icRenameMailbox; return imagePaths.icRenameMailbox;
case MailboxActions.delete: case MailboxActions.delete:
return imagePaths.icDelete; return imagePaths.icDelete;
case MailboxActions.disableMailbox:
return imagePaths.icEyeOff;
default: default:
return ''; return '';
} }
@@ -93,6 +98,7 @@ extension MailboxActionsExtension on MailboxActions {
return AppColor.colorActionDeleteConfirmDialog; return AppColor.colorActionDeleteConfirmDialog;
case MailboxActions.disableSpamReport: case MailboxActions.disableSpamReport:
case MailboxActions.enableSpamReport: case MailboxActions.enableSpamReport:
case MailboxActions.disableMailbox:
return AppColor.primaryColor; return AppColor.primaryColor;
default: default:
return Colors.black; return Colors.black;
@@ -140,6 +146,7 @@ extension MailboxActionsExtension on MailboxActions {
case MailboxActions.openInNewTab: case MailboxActions.openInNewTab:
case MailboxActions.disableSpamReport: case MailboxActions.disableSpamReport:
case MailboxActions.enableSpamReport: case MailboxActions.enableSpamReport:
case MailboxActions.disableMailbox:
return ContextMenuItemState.activated; return ContextMenuItemState.activated;
case MailboxActions.markAsRead: case MailboxActions.markAsRead:
return mailbox.getCountUnReadEmails().isNotEmpty return mailbox.getCountUnReadEmails().isNotEmpty
@@ -15,7 +15,7 @@ typedef OnOpenMailboxFolderClick = void Function(MailboxNode);
typedef OnSelectMailboxFolderClick = void Function(MailboxNode); typedef OnSelectMailboxFolderClick = void Function(MailboxNode);
typedef OnMenuActionClick = void Function(RelativeRect, MailboxNode); typedef OnMenuActionClick = void Function(RelativeRect, MailboxNode);
typedef OnDragItemAccepted = void Function(List<PresentationEmail>, PresentationMailbox); typedef OnDragItemAccepted = void Function(List<PresentationEmail>, PresentationMailbox);
typedef OnLongPressSpamReport = void Function(MailboxNode); typedef OnLongPressMailboxFolderClick = void Function(MailboxNode);
class MailBoxFolderTileBuilder { class MailBoxFolderTileBuilder {
@@ -36,7 +36,7 @@ class MailBoxFolderTileBuilder {
OnSelectMailboxFolderClick? _onSelectMailboxFolderClick; OnSelectMailboxFolderClick? _onSelectMailboxFolderClick;
OnMenuActionClick? _onMenuActionClick; OnMenuActionClick? _onMenuActionClick;
OnDragItemAccepted? _onDragItemAccepted; OnDragItemAccepted? _onDragItemAccepted;
OnLongPressSpamReport? _onLongPressSpamReport; OnLongPressMailboxFolderClick? _onLongPressMailboxFolderClick;
bool isHoverItem = false; bool isHoverItem = false;
@@ -74,8 +74,8 @@ class MailBoxFolderTileBuilder {
_onDragItemAccepted = onDragItemAccepted; _onDragItemAccepted = onDragItemAccepted;
} }
void addOnLongPressSpamReport(OnLongPressSpamReport onLongPressSpamReport) { void addOnLongPressMailboxFolderClick(OnLongPressMailboxFolderClick onLongPressMailboxFolderClick) {
_onLongPressSpamReport = onLongPressSpamReport; _onLongPressMailboxFolderClick = onLongPressMailboxFolderClick;
} }
Widget build() => DragTarget<List<PresentationEmail>>( Widget build() => DragTarget<List<PresentationEmail>>(
@@ -127,9 +127,11 @@ 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: _mailboxNode.item.isSpam ? () { onLongPress: () {
_onLongPressSpamReport?.call(_mailboxNode); if(_mailboxNode.item.isShowDisableMailbox || _mailboxNode.item.isSpam) {
} : null, _onLongPressMailboxFolderClick?.call(_mailboxNode);
}
},
onTap: () => allSelectMode == SelectMode.ACTIVE onTap: () => allSelectMode == SelectMode.ACTIVE
? _onSelectMailboxFolderClick?.call(_mailboxNode) ? _onSelectMailboxFolderClick?.call(_mailboxNode)
: _onOpenMailboxFolderClick?.call(_mailboxNode), : _onOpenMailboxFolderClick?.call(_mailboxNode),
@@ -170,6 +172,7 @@ class MailBoxFolderTileBuilder {
child: Material( child: Material(
color: Colors.transparent, color: Colors.transparent,
child: InkWell( child: InkWell(
onLongPress: () => print('123'),
onTap: () => _onOpenMailboxFolderClick?.call(_mailboxNode), onTap: () => _onOpenMailboxFolderClick?.call(_mailboxNode),
child: Container( child: Container(
padding: const EdgeInsets.symmetric(vertical: 12, horizontal: 24), padding: const EdgeInsets.symmetric(vertical: 12, horizontal: 24),
@@ -199,7 +202,7 @@ class MailBoxFolderTileBuilder {
if (_mailboxNode.hasChildren()) if (_mailboxNode.hasChildren())
Row( Row(
children: [ children: [
const SizedBox(width: 8), SizedBox(width: _mailboxNode.item.hasRole() ? 0 : 8),
buildIconWeb( buildIconWeb(
icon: SvgPicture.asset( icon: SvgPicture.asset(
_mailboxNode.expandMode == ExpandMode.EXPAND _mailboxNode.expandMode == ExpandMode.EXPAND
@@ -216,11 +219,10 @@ class MailBoxFolderTileBuilder {
? AppLocalizations.of(_context).collapse ? AppLocalizations.of(_context).collapse
: AppLocalizations.of(_context).expand, : AppLocalizations.of(_context).expand,
onTap: () => _onExpandFolderActionClick?.call(_mailboxNode)), onTap: () => _onExpandFolderActionClick?.call(_mailboxNode)),
const SizedBox(width: 4),
], ],
) )
else else
SizedBox(width:_mailboxNode.item.hasRole() ? 0 : 24), SizedBox(width: !_mailboxNode.item.hasRole() ? 32 : 24),
Transform( Transform(
transform: Matrix4.translationValues(-4.0, 0.0, 0.0), transform: Matrix4.translationValues(-4.0, 0.0, 0.0),
child: _buildLeadingIcon()), child: _buildLeadingIcon()),
@@ -254,7 +256,7 @@ class MailBoxFolderTileBuilder {
], ],
) )
else else
SizedBox(width: _mailboxNode.item.hasRole() ? 0 : 36), const SizedBox(width: 36),
_buildLeadingIcon(), _buildLeadingIcon(),
]); ]);
} else { } else {
@@ -101,6 +101,8 @@ class PresentationMailbox with EquatableMixin {
(namespace?.value.indexOf('[') ?? 0) + 1, (namespace?.value.indexOf('[') ?? 0) + 1,
namespace?.value.indexOf(']')); namespace?.value.indexOf(']'));
bool get isShowDisableMailbox => isTeamMailboxes || hasRole() || !hasParentId();
@override @override
List<Object?> get props => [ List<Object?> get props => [
id, id,