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 =>
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;
@@ -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<CapabilityIdentifier> capabilitiesForGetMailboxMethod(Session session, AccountId accountId) {
Set<CapabilityIdentifier> _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<bool> 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;
});
@@ -1,4 +1,5 @@
enum MailboxSubscribeStateAction {
subscribing,
enum MailboxSubscribeAction {
subscribe,
unSubscribe,
undo
}
@@ -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<Object?> get props => [mailbox, newState, mailboxSubscribeStateAction];
List<Object?> get props => [mailboxId, newState, mailboxSubscribeStateAction];
}
@@ -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<Object?> get props => [
mailbox,
mailboxId,
currentEmailState,
currentMailboxState,
mailboxSubscribeStateAction
@@ -21,7 +21,7 @@ class SubscribeMailboxInteractor {
if (result) {
yield Right<Failure, Success>(SubscribeMailboxSuccess(
request.mailbox,
request.mailboxId,
currentMailboxState: currentMailboxState,
request.mailboxSubscribeStateAction));
} else {
@@ -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,
@@ -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) {
+1 -1
View File
@@ -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();