TF-1311 Check condition isMailboxPersonal

This commit is contained in:
dab246
2023-02-08 15:59:52 +07:00
committed by Dat Vu
parent 9a46f7f865
commit f395fd7dc0
9 changed files with 32 additions and 41 deletions
@@ -148,9 +148,10 @@ abstract class BaseMailboxController extends BaseController {
bool get personalMailboxHasChild => bool get personalMailboxHasChild =>
personalMailboxTree.value.root.childrenItems?.isNotEmpty ?? false; personalMailboxTree.value.root.childrenItems?.isNotEmpty ?? false;
bool get teamMailboxesHasChild => bool get teamMailboxesHasChild {
(teamMailboxesTree.value.root.childrenItems?.isNotEmpty ?? false ) return (teamMailboxesTree.value.root.childrenItems?.isNotEmpty ?? false)
&& !teamMailboxesTree.value.root.item.isTeamMailboxes; && !teamMailboxesTree.value.root.item.isTeamMailboxes;
}
MailboxNode get defaultRootNode => defaultMailboxTree.value.root; MailboxNode get defaultRootNode => defaultMailboxTree.value.root;
@@ -49,7 +49,7 @@ class MailboxAPI with HandleSetErrorMixin {
final queryInvocation = jmapRequestBuilder.invocation(getMailboxCreated); final queryInvocation = jmapRequestBuilder.invocation(getMailboxCreated);
final capabilities = capabilitiesForGetMailboxMethod(session, accountId); final capabilities = _capabilitiesForMailboxMethod(session, accountId);
final result = await (jmapRequestBuilder final result = await (jmapRequestBuilder
..usings(capabilities)) ..usings(capabilities))
@@ -63,7 +63,7 @@ class MailboxAPI with HandleSetErrorMixin {
return MailboxResponse(mailboxes: resultCreated?.list, state: resultCreated?.state); return MailboxResponse(mailboxes: resultCreated?.list, state: resultCreated?.state);
} }
Set<CapabilityIdentifier> capabilitiesForGetMailboxMethod(Session session, AccountId accountId) { Set<CapabilityIdentifier> _capabilitiesForMailboxMethod(Session session, AccountId accountId) {
final getMailboxCreated = GetMailboxMethod(accountId); final getMailboxCreated = GetMailboxMethod(accountId);
try { try {
requireCapability( requireCapability(
@@ -101,7 +101,7 @@ class MailboxAPI with HandleSetErrorMixin {
final getMailboxUpdatedInvocation = jmapRequestBuilder.invocation(getMailboxUpdated); final getMailboxUpdatedInvocation = jmapRequestBuilder.invocation(getMailboxUpdated);
final getMailboxCreatedInvocation = jmapRequestBuilder.invocation(getMailboxCreated); final getMailboxCreatedInvocation = jmapRequestBuilder.invocation(getMailboxCreated);
final capabilities = capabilitiesForGetMailboxMethod(session, accountId); final capabilities = _capabilitiesForMailboxMethod(session, accountId);
final result = await (jmapRequestBuilder final result = await (jmapRequestBuilder
..usings(capabilities)) ..usings(capabilities))
@@ -297,7 +297,7 @@ class MailboxAPI with HandleSetErrorMixin {
Future<bool> subscribeMailbox(AccountId accountId, SubscribeMailboxRequest request) async { Future<bool> subscribeMailbox(AccountId accountId, SubscribeMailboxRequest request) async {
final setMailboxMethod = SetMailboxMethod(accountId) final setMailboxMethod = SetMailboxMethod(accountId)
..addUpdates({ ..addUpdates({
request.mailbox.id.id : PatchObject({ request.mailboxId.id : PatchObject({
'isSubscribed': request.newState == MailboxSubscribeState.disabled ? false : true 'isSubscribed': request.newState == MailboxSubscribeState.disabled ? false : true
}) })
}); });
@@ -316,7 +316,7 @@ class MailboxAPI with HandleSetErrorMixin {
SetMailboxResponse.deserialize); SetMailboxResponse.deserialize);
return Future.sync(() async { return Future.sync(() async {
return setMailboxResponse?.updated?.isNotEmpty == true; return setMailboxResponse?.updated?.containsKey(request.mailboxId.id) ?? false;
}).catchError((error) { }).catchError((error) {
throw error; throw error;
}); });
@@ -1,4 +1,5 @@
enum MailboxSubscribeStateAction { enum MailboxSubscribeAction {
subscribing, subscribe,
unSubscribe,
undo undo
} }
@@ -1,19 +1,19 @@
import 'package:equatable/equatable.dart'; 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_action_state.dart';
import 'package:tmail_ui_user/features/mailbox/domain/model/mailbox_subscribe_state.dart'; import 'package:tmail_ui_user/features/mailbox/domain/model/mailbox_subscribe_state.dart';
class SubscribeMailboxRequest with EquatableMixin { class SubscribeMailboxRequest with EquatableMixin {
final PresentationMailbox mailbox; final MailboxId mailboxId;
final MailboxSubscribeState newState; final MailboxSubscribeState newState;
final MailboxSubscribeStateAction mailboxSubscribeStateAction; final MailboxSubscribeAction mailboxSubscribeStateAction;
SubscribeMailboxRequest( SubscribeMailboxRequest(
this.mailbox, this.mailboxId,
this.newState, this.newState,
this.mailboxSubscribeStateAction); this.mailboxSubscribeStateAction);
@override @override
List<Object?> get props => [mailbox, newState, mailboxSubscribeStateAction]; List<Object?> get props => [mailboxId, newState, mailboxSubscribeStateAction];
} }
@@ -1,5 +1,5 @@
import 'package:core/core.dart'; 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:tmail_ui_user/features/base/state/ui_action_state.dart';
import 'package:jmap_dart_client/jmap/core/state.dart' as jmap; 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'; 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 LoadingSubscribeMailbox extends UIState {}
class SubscribeMailboxSuccess extends UIActionState { class SubscribeMailboxSuccess extends UIActionState {
final PresentationMailbox mailbox; final MailboxId mailboxId;
final MailboxSubscribeStateAction mailboxSubscribeStateAction; final MailboxSubscribeAction mailboxSubscribeStateAction;
SubscribeMailboxSuccess( SubscribeMailboxSuccess(
this.mailbox, this.mailboxId,
this.mailboxSubscribeStateAction, this.mailboxSubscribeStateAction,
{ {
jmap.State? currentEmailState, jmap.State? currentEmailState,
@@ -21,7 +21,7 @@ class SubscribeMailboxSuccess extends UIActionState {
@override @override
List<Object?> get props => [ List<Object?> get props => [
mailbox, mailboxId,
currentEmailState, currentEmailState,
currentMailboxState, currentMailboxState,
mailboxSubscribeStateAction mailboxSubscribeStateAction
@@ -21,7 +21,7 @@ class SubscribeMailboxInteractor {
if (result) { if (result) {
yield Right<Failure, Success>(SubscribeMailboxSuccess( yield Right<Failure, Success>(SubscribeMailboxSuccess(
request.mailbox, request.mailboxId,
currentMailboxState: currentMailboxState, currentMailboxState: currentMailboxState,
request.mailboxSubscribeStateAction)); request.mailboxSubscribeStateAction));
} else { } else {
@@ -1155,9 +1155,9 @@ class MailboxController extends BaseMailboxController {
break; break;
case MailboxActions.disableMailbox: case MailboxActions.disableMailbox:
subscribeMailboxAction(SubscribeMailboxRequest( subscribeMailboxAction(SubscribeMailboxRequest(
mailbox, mailbox.id,
MailboxSubscribeState.disabled, MailboxSubscribeState.disabled,
MailboxSubscribeStateAction.subscribing)); MailboxSubscribeAction.unSubscribe));
break; break;
default: default:
break; break;
@@ -1230,14 +1230,16 @@ class MailboxController extends BaseMailboxController {
void subscribeMailboxAction(SubscribeMailboxRequest subscribeMailboxRequest) { void subscribeMailboxAction(SubscribeMailboxRequest subscribeMailboxRequest) {
final _accountId = mailboxDashBoardController.accountId.value; final _accountId = mailboxDashBoardController.accountId.value;
if(_accountId != null) { if (_accountId != null) {
consumeState(_subscribeMailboxInteractor.execute( consumeState(_subscribeMailboxInteractor.execute(
_accountId, subscribeMailboxRequest)); _accountId,
subscribeMailboxRequest
));
} }
} }
void subscribeMailboxSuccess(SubscribeMailboxSuccess subscribeMailboxSuccess) { void subscribeMailboxSuccess(SubscribeMailboxSuccess subscribeMailboxSuccess) {
if(subscribeMailboxSuccess.mailboxSubscribeStateAction == MailboxSubscribeStateAction.subscribing if(subscribeMailboxSuccess.mailboxSubscribeStateAction == MailboxSubscribeAction.unSubscribe
&& currentOverlayContext != null && currentOverlayContext != null
&& currentContext != null) { && currentContext != null) {
_appToast.showBottomToast( _appToast.showBottomToast(
@@ -1246,9 +1248,9 @@ class MailboxController extends BaseMailboxController {
actionName: AppLocalizations.of(currentContext!).undo, actionName: AppLocalizations.of(currentContext!).undo,
onActionClick: () { onActionClick: () {
subscribeMailboxAction(SubscribeMailboxRequest( subscribeMailboxAction(SubscribeMailboxRequest(
subscribeMailboxSuccess.mailbox, subscribeMailboxSuccess.mailboxId,
MailboxSubscribeState.enabled, MailboxSubscribeState.enabled,
MailboxSubscribeStateAction.undo)); MailboxSubscribeAction.undo));
}, },
leadingIcon: SvgPicture.asset( leadingIcon: SvgPicture.asset(
_imagePaths.icFolderMailbox, _imagePaths.icFolderMailbox,
@@ -176,7 +176,6 @@ 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,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() { Widget _buildLeadingMailboxItem() {
if (BuildUtils.isWeb) { if (BuildUtils.isWeb) {
if (mailboxDisplayed == MailboxDisplayed.mailbox) { if (mailboxDisplayed == MailboxDisplayed.mailbox) {
+1 -1
View File
@@ -63,7 +63,7 @@ class PresentationMailbox with EquatableMixin {
bool hasRole() => role != null && role!.value.isNotEmpty; 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(); bool get isTeamMailboxes => !isPersonal && !hasParentId();