From 8c7c7c0db1984ee0291998c05144b1a5bd40e9b2 Mon Sep 17 00:00:00 2001 From: sherlockvn Date: Tue, 17 Jan 2023 23:38:00 +0700 Subject: [PATCH] TF-1194 edit default identity: add controller to edit identity screen --- .../identity_creator_controller.dart | 28 ++++++++++++++++--- .../identities/identities_controller.dart | 16 +++++++++-- 2 files changed, 37 insertions(+), 7 deletions(-) diff --git a/lib/features/identity_creator/presentation/identity_creator_controller.dart b/lib/features/identity_creator/presentation/identity_creator_controller.dart index 2a5371ad7..5c3c3234c 100644 --- a/lib/features/identity_creator/presentation/identity_creator_controller.dart +++ b/lib/features/identity_creator/presentation/identity_creator_controller.dart @@ -32,6 +32,7 @@ import 'package:tmail_ui_user/features/manage_account/domain/model/edit_identity import 'package:tmail_ui_user/features/manage_account/domain/state/get_all_identities_state.dart'; 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/routes/route_navigation.dart'; import 'package:uuid/uuid.dart'; @@ -41,6 +42,7 @@ class IdentityCreatorController extends BaseController { final VerifyNameInteractor _verifyNameInteractor; final GetAllIdentitiesInteractor _getAllIdentitiesInteractor; + final IdentityUtils _identityUtils; final _uuid = Get.find(); @@ -91,7 +93,8 @@ class IdentityCreatorController extends BaseController { IdentityCreatorController( this._verifyNameInteractor, - this._getAllIdentitiesInteractor + this._getAllIdentitiesInteractor, + this._identityUtils ); @override @@ -164,7 +167,7 @@ class IdentityCreatorController extends BaseController { if (accountId != null) { consumeState(_getAllIdentitiesInteractor.execute( accountId!, - properties: Properties({'email'}) + properties: Properties({'email', 'sortOrder'}) )); } } @@ -178,6 +181,7 @@ class IdentityCreatorController extends BaseController { listEmailAddressOfReplyTo.add(noneEmailAddress); listEmailAddressOfReplyTo.addAll(listEmailAddressDefault); _setUpAllFieldEmailAddress(); + _setUpDefaultIdentity(success.identities); } else { _setDefaultEmailAddressList(); } @@ -243,6 +247,19 @@ class IdentityCreatorController extends BaseController { } } + void _setUpDefaultIdentity(List? identities) { + final listDefaultIdentityIds = _identityUtils + .getSmallestOrderedIdentity(identities) + ?.map((identity) => identity.id!); + + // if all identities have same sortOrder, it means it don't have default identity + if (listDefaultIdentityIds?.length == identities?.length) { + isDefaultIdentity.value = false; + } else { + isDefaultIdentity.value = listDefaultIdentityIds?.contains(identity?.id) ?? false; + } + } + void selectSignatureType(BuildContext context, SignatureType newSignatureType) async { if (newSignatureType == SignatureType.plainText && !BuildUtils.isWeb) { final signatureText = await _getSignatureHtmlText(); @@ -298,7 +315,9 @@ class IdentityCreatorController extends BaseController { ? {replyToOfIdentity.value!} : {}; - final sortOrder = isDefaultIdentity.value ? UnsignedInt(0) : null; + final sortOrder = isDefaultIdentity.value + ? UnsignedInt(0) + : UnsignedInt(100); final newIdentity = Identity( name: _nameIdentity, @@ -328,7 +347,8 @@ class IdentityCreatorController extends BaseController { } else { final identityRequest = EditIdentityRequest( identityId: identity!.id!, - identityRequest: newIdentity.toIdentityRequest()); + identityRequest: newIdentity.toIdentityRequest(), + isDefaultIdentity: isDefaultIdentity.value); if (BuildUtils.isWeb) { _disposeWidget(); 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 e2c464dc4..514239de5 100644 --- a/lib/features/manage_account/presentation/profiles/identities/identities_controller.dart +++ b/lib/features/manage_account/presentation/profiles/identities/identities_controller.dart @@ -26,6 +26,7 @@ import 'package:tmail_ui_user/features/manage_account/domain/state/get_all_ident import 'package:tmail_ui_user/features/manage_account/domain/usecases/create_new_default_identity_interactor.dart'; import 'package:tmail_ui_user/features/manage_account/domain/usecases/create_new_identity_interactor.dart'; import 'package:tmail_ui_user/features/manage_account/domain/usecases/delete_identity_interactor.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/usecases/edit_default_identity_interactor.dart'; import 'package:tmail_ui_user/features/manage_account/domain/usecases/edit_identity_interactor.dart'; import 'package:tmail_ui_user/features/manage_account/domain/usecases/get_all_identities_interactor.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/manage_account_dashboard_controller.dart'; @@ -47,6 +48,7 @@ class IdentitiesController extends BaseController { final CreateNewDefaultIdentityInteractor _createNewDefaultIdentityInteractor; final DeleteIdentityInteractor _deleteIdentityInteractor; final EditIdentityInteractor _editIdentityInteractor; + final EditDefaultIdentityInteractor _editDefaultIdentityInteractor; final identitySelected = Rxn(); final listAllIdentities = [].obs; @@ -58,7 +60,8 @@ class IdentitiesController extends BaseController { this._deleteIdentityInteractor, this._createNewIdentityInteractor, this._editIdentityInteractor, - this._createNewDefaultIdentityInteractor + this._createNewDefaultIdentityInteractor, + this._editDefaultIdentityInteractor ); @override @@ -349,8 +352,15 @@ class IdentitiesController extends BaseController { } } - void _editIdentityAction(AccountId accountId, EditIdentityRequest editIdentityRequest) async { - consumeState(_editIdentityInteractor.execute(accountId, editIdentityRequest)); + void _editIdentityAction( + AccountId accountId, + EditIdentityRequest editIdentityRequest + ) async { + if (editIdentityRequest.isDefaultIdentity) { + consumeState(_editDefaultIdentityInteractor.execute(accountId, editIdentityRequest)); + } else { + consumeState(_editIdentityInteractor.execute(accountId, editIdentityRequest)); + } } void _editIdentitySuccess(EditIdentitySuccess success) {