TF-1311 Check condition isMailboxPersonal
This commit is contained in:
@@ -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) {
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user