From d0277148e4619dee2db2d04fdb1f1a52e677f0ad Mon Sep 17 00:00:00 2001 From: sherlockvn Date: Mon, 30 Jan 2023 16:06:54 +0700 Subject: [PATCH] fixup! TF-1194 edit default identity: update presentation layer --- .../identity_creator_controller.dart | 22 +++++++++++++++---- .../model/identity_creator_arguments.dart | 10 ++++++++- .../identities/identities_controller.dart | 9 +++++--- 3 files changed, 33 insertions(+), 8 deletions(-) diff --git a/lib/features/identity_creator/presentation/identity_creator_controller.dart b/lib/features/identity_creator/presentation/identity_creator_controller.dart index 11964ea78..c356d24bc 100644 --- a/lib/features/identity_creator/presentation/identity_creator_controller.dart +++ b/lib/features/identity_creator/presentation/identity_creator_controller.dart @@ -9,8 +9,10 @@ import 'package:get/get_instance/get_instance.dart'; import 'package:get/get_rx/get_rx.dart'; import 'package:html_editor_enhanced/html_editor.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; +import 'package:jmap_dart_client/jmap/core/capability/capability_identifier.dart'; import 'package:jmap_dart_client/jmap/core/id.dart'; import 'package:jmap_dart_client/jmap/core/properties/properties.dart'; +import 'package:jmap_dart_client/jmap/core/session/session.dart'; import 'package:jmap_dart_client/jmap/core/unsigned_int.dart'; import 'package:jmap_dart_client/jmap/identities/identity.dart'; import 'package:jmap_dart_client/jmap/mail/email/email_address.dart'; @@ -33,6 +35,7 @@ import 'package:tmail_ui_user/features/manage_account/domain/state/get_all_ident import 'package:tmail_ui_user/features/manage_account/domain/usecases/get_all_identities_interactor.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/model/identity_action_type.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/profiles/identities/utils/identity_utils.dart'; +import 'package:tmail_ui_user/main/error/capability_validator.dart'; import 'package:tmail_ui_user/main/routes/route_navigation.dart'; import 'package:uuid/uuid.dart'; @@ -73,6 +76,7 @@ class IdentityCreatorController extends BaseController { String? _nameIdentity; String? _contentHtmlEditor; AccountId? accountId; + Session? session; UserProfile? userProfile; Identity? identity; IdentityCreatorArguments? arguments; @@ -117,6 +121,7 @@ class IdentityCreatorController extends BaseController { super.onReady(); if (arguments != null) { accountId = arguments!.accountId; + session = arguments!.session; userProfile = arguments!.userProfile; identity = arguments!.identity; actionType.value = arguments!.actionType; @@ -165,10 +170,19 @@ class IdentityCreatorController extends BaseController { void _getAllIdentities() { log('IdentityCreatorController::_getAllIdentities() '); if (accountId != null) { - consumeState(_getAllIdentitiesInteractor.execute( - accountId!, - properties: Properties({'email', 'sortOrder'}) - )); + try { + requireCapability(session!, accountId!, [CapabilityIdentifier.jamesSortOrder]); + consumeState(_getAllIdentitiesInteractor.execute( + accountId!, + properties: Properties({'email', 'sortOrder'}) + )); + } catch (e) { + logError('IdentityCreatorController::_getAllIdentities(): exception: $e'); + consumeState(_getAllIdentitiesInteractor.execute( + accountId!, + properties: Properties({'email'}) + )); + } } } diff --git a/lib/features/identity_creator/presentation/model/identity_creator_arguments.dart b/lib/features/identity_creator/presentation/model/identity_creator_arguments.dart index 120b7fcfa..0259f2b44 100644 --- a/lib/features/identity_creator/presentation/model/identity_creator_arguments.dart +++ b/lib/features/identity_creator/presentation/model/identity_creator_arguments.dart @@ -1,18 +1,21 @@ import 'package:equatable/equatable.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; +import 'package:jmap_dart_client/jmap/core/session/session.dart'; import 'package:jmap_dart_client/jmap/identities/identity.dart'; import 'package:model/model.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/model/identity_action_type.dart'; class IdentityCreatorArguments with EquatableMixin { final AccountId accountId; + final Session session; final UserProfile userProfile; final IdentityActionType actionType; final Identity? identity; IdentityCreatorArguments( this.accountId, + this.session, this.userProfile, { this.identity, @@ -21,5 +24,10 @@ class IdentityCreatorArguments with EquatableMixin { ); @override - List get props => [accountId, userProfile, identity, actionType]; + List get props => [ + accountId, + session, + userProfile, + identity, + actionType]; } \ No newline at end of file diff --git a/lib/features/manage_account/presentation/profiles/identities/identities_controller.dart b/lib/features/manage_account/presentation/profiles/identities/identities_controller.dart index 514239de5..eba6fd80b 100644 --- a/lib/features/manage_account/presentation/profiles/identities/identities_controller.dart +++ b/lib/features/manage_account/presentation/profiles/identities/identities_controller.dart @@ -150,8 +150,9 @@ class IdentitiesController extends BaseController { void goToCreateNewIdentity(BuildContext context) async { final accountId = _accountDashBoardController.accountId.value; final userProfile = _accountDashBoardController.userProfile.value; - if (accountId != null && userProfile != null) { - final arguments = IdentityCreatorArguments(accountId, userProfile); + final session = _accountDashBoardController.sessionCurrent.value; + if (accountId != null && session != null && userProfile != null) { + final arguments = IdentityCreatorArguments(accountId, session, userProfile); if (BuildUtils.isWeb) { showDialogIdentityCreator( @@ -322,9 +323,11 @@ class IdentitiesController extends BaseController { void goToEditIdentity(BuildContext context, Identity identity) async { final accountId = _accountDashBoardController.accountId.value; final userProfile = _accountDashBoardController.userProfile.value; - if (accountId != null && userProfile != null) { + final session = _accountDashBoardController.sessionCurrent.value; + if (accountId != null && session != null && userProfile != null) { final arguments = IdentityCreatorArguments( accountId, + session, userProfile, identity: identity, actionType: IdentityActionType.edit);