TF-1194 edit default identity: add controller to edit identity screen

This commit is contained in:
sherlockvn
2023-01-17 23:38:00 +07:00
committed by Dat Vu
parent 9c6379e40d
commit 8c7c7c0db1
2 changed files with 37 additions and 7 deletions
@@ -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<Uuid>();
@@ -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<Identity>? 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!}
: <EmailAddress>{};
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();
@@ -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<Identity>();
final listAllIdentities = <Identity>[].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) {