TF-1194 edit default identity: add controller to edit identity screen
This commit is contained in:
@@ -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/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/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/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:tmail_ui_user/main/routes/route_navigation.dart';
|
||||||
import 'package:uuid/uuid.dart';
|
import 'package:uuid/uuid.dart';
|
||||||
|
|
||||||
@@ -41,6 +42,7 @@ class IdentityCreatorController extends BaseController {
|
|||||||
|
|
||||||
final VerifyNameInteractor _verifyNameInteractor;
|
final VerifyNameInteractor _verifyNameInteractor;
|
||||||
final GetAllIdentitiesInteractor _getAllIdentitiesInteractor;
|
final GetAllIdentitiesInteractor _getAllIdentitiesInteractor;
|
||||||
|
final IdentityUtils _identityUtils;
|
||||||
|
|
||||||
final _uuid = Get.find<Uuid>();
|
final _uuid = Get.find<Uuid>();
|
||||||
|
|
||||||
@@ -91,7 +93,8 @@ class IdentityCreatorController extends BaseController {
|
|||||||
|
|
||||||
IdentityCreatorController(
|
IdentityCreatorController(
|
||||||
this._verifyNameInteractor,
|
this._verifyNameInteractor,
|
||||||
this._getAllIdentitiesInteractor
|
this._getAllIdentitiesInteractor,
|
||||||
|
this._identityUtils
|
||||||
);
|
);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -164,7 +167,7 @@ class IdentityCreatorController extends BaseController {
|
|||||||
if (accountId != null) {
|
if (accountId != null) {
|
||||||
consumeState(_getAllIdentitiesInteractor.execute(
|
consumeState(_getAllIdentitiesInteractor.execute(
|
||||||
accountId!,
|
accountId!,
|
||||||
properties: Properties({'email'})
|
properties: Properties({'email', 'sortOrder'})
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -178,6 +181,7 @@ class IdentityCreatorController extends BaseController {
|
|||||||
listEmailAddressOfReplyTo.add(noneEmailAddress);
|
listEmailAddressOfReplyTo.add(noneEmailAddress);
|
||||||
listEmailAddressOfReplyTo.addAll(listEmailAddressDefault);
|
listEmailAddressOfReplyTo.addAll(listEmailAddressDefault);
|
||||||
_setUpAllFieldEmailAddress();
|
_setUpAllFieldEmailAddress();
|
||||||
|
_setUpDefaultIdentity(success.identities);
|
||||||
} else {
|
} else {
|
||||||
_setDefaultEmailAddressList();
|
_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 {
|
void selectSignatureType(BuildContext context, SignatureType newSignatureType) async {
|
||||||
if (newSignatureType == SignatureType.plainText && !BuildUtils.isWeb) {
|
if (newSignatureType == SignatureType.plainText && !BuildUtils.isWeb) {
|
||||||
final signatureText = await _getSignatureHtmlText();
|
final signatureText = await _getSignatureHtmlText();
|
||||||
@@ -298,7 +315,9 @@ class IdentityCreatorController extends BaseController {
|
|||||||
? {replyToOfIdentity.value!}
|
? {replyToOfIdentity.value!}
|
||||||
: <EmailAddress>{};
|
: <EmailAddress>{};
|
||||||
|
|
||||||
final sortOrder = isDefaultIdentity.value ? UnsignedInt(0) : null;
|
final sortOrder = isDefaultIdentity.value
|
||||||
|
? UnsignedInt(0)
|
||||||
|
: UnsignedInt(100);
|
||||||
|
|
||||||
final newIdentity = Identity(
|
final newIdentity = Identity(
|
||||||
name: _nameIdentity,
|
name: _nameIdentity,
|
||||||
@@ -328,7 +347,8 @@ class IdentityCreatorController extends BaseController {
|
|||||||
} else {
|
} else {
|
||||||
final identityRequest = EditIdentityRequest(
|
final identityRequest = EditIdentityRequest(
|
||||||
identityId: identity!.id!,
|
identityId: identity!.id!,
|
||||||
identityRequest: newIdentity.toIdentityRequest());
|
identityRequest: newIdentity.toIdentityRequest(),
|
||||||
|
isDefaultIdentity: isDefaultIdentity.value);
|
||||||
|
|
||||||
if (BuildUtils.isWeb) {
|
if (BuildUtils.isWeb) {
|
||||||
_disposeWidget();
|
_disposeWidget();
|
||||||
|
|||||||
+13
-3
@@ -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_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/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/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/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/domain/usecases/get_all_identities_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/presentation/manage_account_dashboard_controller.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 CreateNewDefaultIdentityInteractor _createNewDefaultIdentityInteractor;
|
||||||
final DeleteIdentityInteractor _deleteIdentityInteractor;
|
final DeleteIdentityInteractor _deleteIdentityInteractor;
|
||||||
final EditIdentityInteractor _editIdentityInteractor;
|
final EditIdentityInteractor _editIdentityInteractor;
|
||||||
|
final EditDefaultIdentityInteractor _editDefaultIdentityInteractor;
|
||||||
|
|
||||||
final identitySelected = Rxn<Identity>();
|
final identitySelected = Rxn<Identity>();
|
||||||
final listAllIdentities = <Identity>[].obs;
|
final listAllIdentities = <Identity>[].obs;
|
||||||
@@ -58,7 +60,8 @@ class IdentitiesController extends BaseController {
|
|||||||
this._deleteIdentityInteractor,
|
this._deleteIdentityInteractor,
|
||||||
this._createNewIdentityInteractor,
|
this._createNewIdentityInteractor,
|
||||||
this._editIdentityInteractor,
|
this._editIdentityInteractor,
|
||||||
this._createNewDefaultIdentityInteractor
|
this._createNewDefaultIdentityInteractor,
|
||||||
|
this._editDefaultIdentityInteractor
|
||||||
);
|
);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -349,8 +352,15 @@ class IdentitiesController extends BaseController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void _editIdentityAction(AccountId accountId, EditIdentityRequest editIdentityRequest) async {
|
void _editIdentityAction(
|
||||||
consumeState(_editIdentityInteractor.execute(accountId, editIdentityRequest));
|
AccountId accountId,
|
||||||
|
EditIdentityRequest editIdentityRequest
|
||||||
|
) async {
|
||||||
|
if (editIdentityRequest.isDefaultIdentity) {
|
||||||
|
consumeState(_editDefaultIdentityInteractor.execute(accountId, editIdentityRequest));
|
||||||
|
} else {
|
||||||
|
consumeState(_editIdentityInteractor.execute(accountId, editIdentityRequest));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void _editIdentitySuccess(EditIdentitySuccess success) {
|
void _editIdentitySuccess(EditIdentitySuccess success) {
|
||||||
|
|||||||
Reference in New Issue
Block a user