From f395fd7dc06fc5d5d2454fc8a073f3c06c43175c Mon Sep 17 00:00:00 2001 From: dab246 Date: Wed, 8 Feb 2023 15:59:52 +0700 Subject: [PATCH] TF-1311 Check condition isMailboxPersonal --- lib/features/base/base_mailbox_controller.dart | 5 +++-- .../mailbox/data/network/mailbox_api.dart | 10 +++++----- .../model/mailbox_subscribe_action_state.dart | 5 +++-- .../domain/model/subscribe_mailbox_request.dart | 10 +++++----- .../domain/state/subscribe_mailbox_state.dart | 10 +++++----- .../usecases/subscribe_mailbox_interactor.dart | 2 +- .../mailbox/presentation/mailbox_controller.dart | 16 +++++++++------- .../widgets/mailbox_folder_tile_builder.dart | 13 ------------- model/lib/mailbox/presentation_mailbox.dart | 2 +- 9 files changed, 32 insertions(+), 41 deletions(-) diff --git a/lib/features/base/base_mailbox_controller.dart b/lib/features/base/base_mailbox_controller.dart index 589dbbd1a..0a4de9fef 100644 --- a/lib/features/base/base_mailbox_controller.dart +++ b/lib/features/base/base_mailbox_controller.dart @@ -148,9 +148,10 @@ abstract class BaseMailboxController extends BaseController { bool get personalMailboxHasChild => personalMailboxTree.value.root.childrenItems?.isNotEmpty ?? false; - bool get teamMailboxesHasChild => - (teamMailboxesTree.value.root.childrenItems?.isNotEmpty ?? false ) + bool get teamMailboxesHasChild { + return (teamMailboxesTree.value.root.childrenItems?.isNotEmpty ?? false) && !teamMailboxesTree.value.root.item.isTeamMailboxes; + } MailboxNode get defaultRootNode => defaultMailboxTree.value.root; diff --git a/lib/features/mailbox/data/network/mailbox_api.dart b/lib/features/mailbox/data/network/mailbox_api.dart index ee181fdbb..1d44fcbf0 100644 --- a/lib/features/mailbox/data/network/mailbox_api.dart +++ b/lib/features/mailbox/data/network/mailbox_api.dart @@ -49,7 +49,7 @@ class MailboxAPI with HandleSetErrorMixin { final queryInvocation = jmapRequestBuilder.invocation(getMailboxCreated); - final capabilities = capabilitiesForGetMailboxMethod(session, accountId); + final capabilities = _capabilitiesForMailboxMethod(session, accountId); final result = await (jmapRequestBuilder ..usings(capabilities)) @@ -63,7 +63,7 @@ class MailboxAPI with HandleSetErrorMixin { return MailboxResponse(mailboxes: resultCreated?.list, state: resultCreated?.state); } - Set capabilitiesForGetMailboxMethod(Session session, AccountId accountId) { + Set _capabilitiesForMailboxMethod(Session session, AccountId accountId) { final getMailboxCreated = GetMailboxMethod(accountId); try { requireCapability( @@ -101,7 +101,7 @@ class MailboxAPI with HandleSetErrorMixin { final getMailboxUpdatedInvocation = jmapRequestBuilder.invocation(getMailboxUpdated); final getMailboxCreatedInvocation = jmapRequestBuilder.invocation(getMailboxCreated); - final capabilities = capabilitiesForGetMailboxMethod(session, accountId); + final capabilities = _capabilitiesForMailboxMethod(session, accountId); final result = await (jmapRequestBuilder ..usings(capabilities)) @@ -297,7 +297,7 @@ class MailboxAPI with HandleSetErrorMixin { Future subscribeMailbox(AccountId accountId, SubscribeMailboxRequest request) async { final setMailboxMethod = SetMailboxMethod(accountId) ..addUpdates({ - request.mailbox.id.id : PatchObject({ + request.mailboxId.id : PatchObject({ 'isSubscribed': request.newState == MailboxSubscribeState.disabled ? false : true }) }); @@ -316,7 +316,7 @@ class MailboxAPI with HandleSetErrorMixin { SetMailboxResponse.deserialize); return Future.sync(() async { - return setMailboxResponse?.updated?.isNotEmpty == true; + return setMailboxResponse?.updated?.containsKey(request.mailboxId.id) ?? false; }).catchError((error) { throw error; }); diff --git a/lib/features/mailbox/domain/model/mailbox_subscribe_action_state.dart b/lib/features/mailbox/domain/model/mailbox_subscribe_action_state.dart index 0a68b883d..106655294 100644 --- a/lib/features/mailbox/domain/model/mailbox_subscribe_action_state.dart +++ b/lib/features/mailbox/domain/model/mailbox_subscribe_action_state.dart @@ -1,4 +1,5 @@ -enum MailboxSubscribeStateAction { - subscribing, +enum MailboxSubscribeAction { + subscribe, + unSubscribe, undo } \ No newline at end of file diff --git a/lib/features/mailbox/domain/model/subscribe_mailbox_request.dart b/lib/features/mailbox/domain/model/subscribe_mailbox_request.dart index ad9ec042f..73c8abbfb 100644 --- a/lib/features/mailbox/domain/model/subscribe_mailbox_request.dart +++ b/lib/features/mailbox/domain/model/subscribe_mailbox_request.dart @@ -1,19 +1,19 @@ import 'package:equatable/equatable.dart'; -import 'package:model/mailbox/presentation_mailbox.dart'; +import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.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'; class SubscribeMailboxRequest with EquatableMixin { - final PresentationMailbox mailbox; + final MailboxId mailboxId; final MailboxSubscribeState newState; - final MailboxSubscribeStateAction mailboxSubscribeStateAction; + final MailboxSubscribeAction mailboxSubscribeStateAction; SubscribeMailboxRequest( - this.mailbox, + this.mailboxId, this.newState, this.mailboxSubscribeStateAction); @override - List get props => [mailbox, newState, mailboxSubscribeStateAction]; + List get props => [mailboxId, newState, mailboxSubscribeStateAction]; } diff --git a/lib/features/mailbox/domain/state/subscribe_mailbox_state.dart b/lib/features/mailbox/domain/state/subscribe_mailbox_state.dart index 1af1488a9..93fb77142 100644 --- a/lib/features/mailbox/domain/state/subscribe_mailbox_state.dart +++ b/lib/features/mailbox/domain/state/subscribe_mailbox_state.dart @@ -1,5 +1,5 @@ import 'package:core/core.dart'; -import 'package:model/mailbox/presentation_mailbox.dart'; +import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart'; import 'package:tmail_ui_user/features/base/state/ui_action_state.dart'; import 'package:jmap_dart_client/jmap/core/state.dart' as jmap; import 'package:tmail_ui_user/features/mailbox/domain/model/mailbox_subscribe_action_state.dart'; @@ -7,11 +7,11 @@ import 'package:tmail_ui_user/features/mailbox/domain/model/mailbox_subscribe_ac class LoadingSubscribeMailbox extends UIState {} class SubscribeMailboxSuccess extends UIActionState { - final PresentationMailbox mailbox; - final MailboxSubscribeStateAction mailboxSubscribeStateAction; + final MailboxId mailboxId; + final MailboxSubscribeAction mailboxSubscribeStateAction; SubscribeMailboxSuccess( - this.mailbox, + this.mailboxId, this.mailboxSubscribeStateAction, { jmap.State? currentEmailState, @@ -21,7 +21,7 @@ class SubscribeMailboxSuccess extends UIActionState { @override List get props => [ - mailbox, + mailboxId, currentEmailState, currentMailboxState, mailboxSubscribeStateAction diff --git a/lib/features/mailbox/domain/usecases/subscribe_mailbox_interactor.dart b/lib/features/mailbox/domain/usecases/subscribe_mailbox_interactor.dart index 3476416b7..5b4461314 100644 --- a/lib/features/mailbox/domain/usecases/subscribe_mailbox_interactor.dart +++ b/lib/features/mailbox/domain/usecases/subscribe_mailbox_interactor.dart @@ -21,7 +21,7 @@ class SubscribeMailboxInteractor { if (result) { yield Right(SubscribeMailboxSuccess( - request.mailbox, + request.mailboxId, currentMailboxState: currentMailboxState, request.mailboxSubscribeStateAction)); } else { diff --git a/lib/features/mailbox/presentation/mailbox_controller.dart b/lib/features/mailbox/presentation/mailbox_controller.dart index c9c420d5a..2ec031b09 100644 --- a/lib/features/mailbox/presentation/mailbox_controller.dart +++ b/lib/features/mailbox/presentation/mailbox_controller.dart @@ -1155,9 +1155,9 @@ class MailboxController extends BaseMailboxController { break; case MailboxActions.disableMailbox: subscribeMailboxAction(SubscribeMailboxRequest( - mailbox, + mailbox.id, MailboxSubscribeState.disabled, - MailboxSubscribeStateAction.subscribing)); + MailboxSubscribeAction.unSubscribe)); break; default: break; @@ -1230,14 +1230,16 @@ class MailboxController extends BaseMailboxController { void subscribeMailboxAction(SubscribeMailboxRequest subscribeMailboxRequest) { final _accountId = mailboxDashBoardController.accountId.value; - if(_accountId != null) { + if (_accountId != null) { consumeState(_subscribeMailboxInteractor.execute( - _accountId, subscribeMailboxRequest)); + _accountId, + subscribeMailboxRequest + )); } } void subscribeMailboxSuccess(SubscribeMailboxSuccess subscribeMailboxSuccess) { - if(subscribeMailboxSuccess.mailboxSubscribeStateAction == MailboxSubscribeStateAction.subscribing + if(subscribeMailboxSuccess.mailboxSubscribeStateAction == MailboxSubscribeAction.unSubscribe && currentOverlayContext != null && currentContext != null) { _appToast.showBottomToast( @@ -1246,9 +1248,9 @@ class MailboxController extends BaseMailboxController { actionName: AppLocalizations.of(currentContext!).undo, onActionClick: () { subscribeMailboxAction(SubscribeMailboxRequest( - subscribeMailboxSuccess.mailbox, + subscribeMailboxSuccess.mailboxId, MailboxSubscribeState.enabled, - MailboxSubscribeStateAction.undo)); + MailboxSubscribeAction.undo)); }, leadingIcon: SvgPicture.asset( _imagePaths.icFolderMailbox, 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 98cea9690..f73b3a636 100644 --- a/lib/features/mailbox/presentation/widgets/mailbox_folder_tile_builder.dart +++ b/lib/features/mailbox/presentation/widgets/mailbox_folder_tile_builder.dart @@ -176,7 +176,6 @@ class MailBoxFolderTileBuilder { child: Material( color: Colors.transparent, child: InkWell( - onLongPress: () => print('123'), onTap: () => _onOpenMailboxFolderClick?.call(_mailboxNode), child: Container( padding: const EdgeInsets.symmetric(vertical: 12, horizontal: 24), @@ -199,18 +198,6 @@ class MailBoxFolderTileBuilder { } } - // double _buildSizedBoxWhenHasNotChildren() { - // if (_mailboxNode.item.hasRole()) { - // if (!_mailboxNode.item.hasParentId()) { - // return 32; - // } else { - // return 8; - // } - // } else { - // return 32; - // } - // } - Widget _buildLeadingMailboxItem() { if (BuildUtils.isWeb) { if (mailboxDisplayed == MailboxDisplayed.mailbox) { diff --git a/model/lib/mailbox/presentation_mailbox.dart b/model/lib/mailbox/presentation_mailbox.dart index 68a2f64ee..79b92d3f2 100644 --- a/model/lib/mailbox/presentation_mailbox.dart +++ b/model/lib/mailbox/presentation_mailbox.dart @@ -63,7 +63,7 @@ class PresentationMailbox with EquatableMixin { bool hasRole() => role != null && role!.value.isNotEmpty; - bool get isPersonal => namespace == Namespace('Personal'); + bool get isPersonal => namespace == null || namespace == Namespace('Personal'); bool get isTeamMailboxes => !isPersonal && !hasParentId();