diff --git a/assets/images/ic_edit.svg b/assets/images/ic_edit.svg
new file mode 100644
index 000000000..c377533c3
--- /dev/null
+++ b/assets/images/ic_edit.svg
@@ -0,0 +1,3 @@
+
diff --git a/core/lib/presentation/resources/image_paths.dart b/core/lib/presentation/resources/image_paths.dart
index 040e18258..875527c74 100644
--- a/core/lib/presentation/resources/image_paths.dart
+++ b/core/lib/presentation/resources/image_paths.dart
@@ -103,6 +103,7 @@ class ImagePaths {
String get icEditIdentity => _getImagePath('ic_edit_identity.svg');
String get icDeleteDialogIdentity => _getImagePath('ic_delete_dialog_identity.svg');
String get icDeleteDialogFailed => _getImagePath('ic_delete_dialog_failed.svg');
+ String get icEdit => _getImagePath('ic_edit.svg');
String _getImagePath(String imageName) {
return AssetsPaths.images + imageName;
diff --git a/lib/features/identity_creator/presentation/identity_creator_controller.dart b/lib/features/identity_creator/presentation/identity_creator_controller.dart
index e4c32d1dc..506f88575 100644
--- a/lib/features/identity_creator/presentation/identity_creator_controller.dart
+++ b/lib/features/identity_creator/presentation/identity_creator_controller.dart
@@ -14,6 +14,7 @@ import 'package:tmail_ui_user/features/mailbox_creator/domain/model/verification
import 'package:tmail_ui_user/features/mailbox_creator/domain/state/verify_name_view_state.dart';
import 'package:tmail_ui_user/features/mailbox_creator/domain/usecases/verify_name_interactor.dart';
import 'package:tmail_ui_user/features/mailbox_creator/presentation/extensions/validator_failure_extension.dart';
+import 'package:tmail_ui_user/features/manage_account/presentation/model/identity_action_type.dart';
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
class IdentityCreatorController extends BaseController {
@@ -36,6 +37,8 @@ class IdentityCreatorController extends BaseController {
AccountId? accountId;
UserProfile? userProfile;
+ IdentityActionType? actionType;
+ Identity? identity;
String? _nameIdentity;
String? _contentHtmlEditor;
@@ -53,7 +56,11 @@ class IdentityCreatorController extends BaseController {
@override
void onReady() {
_getArguments();
- _setDefaultValueForIdentity();
+ if (actionType == IdentityActionType.edit && identity != null) {
+ _setUpValueFromIdentity();
+ } else {
+ _setDefaultValueForIdentity();
+ }
super.onReady();
}
@@ -77,6 +84,8 @@ class IdentityCreatorController extends BaseController {
if (arguments is IdentityCreatorArguments) {
accountId = arguments.accountId;
userProfile = arguments.userProfile;
+ actionType = arguments.actionType;
+ identity = arguments.identity;
}
}
@@ -86,13 +95,54 @@ class IdentityCreatorController extends BaseController {
replyToOfIdentity.value = noneEmailAddress;
if (userProfile != null && userProfile?.email.isNotEmpty == true) {
- final userEmailAddress = EmailAddress(userProfile!.email, userProfile!.email);
+ final userEmailAddress = EmailAddress(null, userProfile!.email);
listEmailAddressDefault.add(userEmailAddress);
listEmailAddressOfReplyTo.add(userEmailAddress);
emailOfIdentity.value = userEmailAddress;
}
}
+ void _setUpValueFromIdentity() {
+ Set listEmailAddress = {};
+ listEmailAddress.add(noneEmailAddress);
+
+ _nameIdentity = identity?.name ?? '';
+ inputNameIdentityController.text = identity?.name ?? '';
+
+ if (identity?.replyTo?.isNotEmpty == true) {
+ replyToOfIdentity.value = identity!.replyTo!.first;
+ listEmailAddress.add(identity!.replyTo!.first);
+ } else {
+ replyToOfIdentity.value = noneEmailAddress;
+ }
+
+ if (identity?.bcc?.isNotEmpty == true) {
+ bccOfIdentity.value = identity!.bcc!.first;
+ listEmailAddress.add(identity!.bcc!.first);
+ } else {
+ bccOfIdentity.value = noneEmailAddress;
+ }
+
+ if (identity?.email?.isNotEmpty == true) {
+ emailOfIdentity.value = EmailAddress(null, identity?.email!);
+ listEmailAddress.add(EmailAddress(null, identity?.email!));
+ }
+
+ listEmailAddressOfReplyTo.value = listEmailAddress.toList();
+ listEmailAddressDefault.value = listEmailAddress
+ .where((emailAddress) => emailAddress != noneEmailAddress)
+ .toList();
+
+ if (identity?.textSignature?.value.isNotEmpty == true) {
+ signaturePlainEditorController.text = identity?.textSignature?.value ?? '';
+ }
+
+ if (identity?.htmlSignature?.value.isNotEmpty == true) {
+ updateContentHtmlEditor(identity?.htmlSignature?.value ?? '');
+ signatureHtmlEditorController.setText(identity?.htmlSignature?.value ?? '');
+ }
+ }
+
void selectSignatureType(SignatureType newSignatureType) {
signatureType.value = newSignatureType;
}
diff --git a/lib/features/identity_creator/presentation/identity_creator_view.dart b/lib/features/identity_creator/presentation/identity_creator_view.dart
index 3de9c54cb..6c50b1241 100644
--- a/lib/features/identity_creator/presentation/identity_creator_view.dart
+++ b/lib/features/identity_creator/presentation/identity_creator_view.dart
@@ -7,6 +7,7 @@ import 'package:tmail_ui_user/features/identity_creator/presentation/identity_cr
import 'package:tmail_ui_user/features/identity_creator/presentation/model/signature_type.dart';
import 'package:tmail_ui_user/features/identity_creator/presentation/widgets/identity_drop_list_field_builder.dart';
import 'package:tmail_ui_user/features/identity_creator/presentation/widgets/identity_input_field_builder.dart';
+import 'package:tmail_ui_user/features/manage_account/presentation/model/identity_action_type.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
class IdentityCreatorView extends GetWidget {
@@ -24,9 +25,16 @@ class IdentityCreatorView extends GetWidget {
backgroundColor: Colors.white,
body: SafeArea(
child: ClipRRect(
- borderRadius: _responsiveUtils.isMobile(context) && _responsiveUtils.isPortrait(context)
- ? const BorderRadius.only(topRight: Radius.circular(14), topLeft: Radius.circular(14))
- : const BorderRadius.all(Radius.zero),
+ borderRadius: const BorderRadius.only(topRight: Radius.circular(14), topLeft: Radius.circular(14)),
+ child: _buildBodyMobile(context)
+ ),
+ )
+ ),
+ landscapeMobile: Scaffold(
+ backgroundColor: Colors.white,
+ body: SafeArea(
+ child: ClipRRect(
+ borderRadius: const BorderRadius.all(Radius.zero),
child: _buildBodyMobile(context)
),
)
@@ -418,29 +426,34 @@ class IdentityCreatorView extends GetWidget {
)),
const SizedBox(height: 24),
Container(
- alignment: Alignment.centerRight,
+ alignment: Alignment.center,
color: Colors.white,
child: Row(
- mainAxisSize: MainAxisSize.min,
children: [
- buildTextButton(
- AppLocalizations.of(context).cancel,
- textStyle: const TextStyle(
- fontWeight: FontWeight.w500,
- fontSize: 17,
- color: AppColor.colorTextButton),
- backgroundColor: AppColor.emailAddressChipColor,
- width: 128,
- height: 44,
- radius: 10,
- onTap: () => controller.closeView(context)),
+ Expanded(
+ child: buildTextButton(
+ AppLocalizations.of(context).cancel,
+ textStyle: const TextStyle(
+ fontWeight: FontWeight.w500,
+ fontSize: 17,
+ color: AppColor.colorTextButton),
+ backgroundColor: AppColor.emailAddressChipColor,
+ width: 128,
+ height: 44,
+ radius: 10,
+ onTap: () => controller.closeView(context)),
+ ),
const SizedBox(width: 12),
- buildTextButton(
- AppLocalizations.of(context).create,
- width: 128,
- height: 44,
- radius: 10,
- onTap: () => controller.createNewIdentity(context)),
+ Expanded(
+ child: Obx(() => buildTextButton(
+ controller.actionType == IdentityActionType.create
+ ? AppLocalizations.of(context).create
+ : AppLocalizations.of(context).save,
+ width: 128,
+ height: 44,
+ radius: 10,
+ onTap: () => controller.createNewIdentity(context))),
+ ),
]
),
)
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 177ddef4a..120b7fcfa 100644
--- a/lib/features/identity_creator/presentation/model/identity_creator_arguments.dart
+++ b/lib/features/identity_creator/presentation/model/identity_creator_arguments.dart
@@ -1,14 +1,25 @@
import 'package:equatable/equatable.dart';
import 'package:jmap_dart_client/jmap/account_id.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 UserProfile userProfile;
+ final IdentityActionType actionType;
+ final Identity? identity;
- IdentityCreatorArguments(this.accountId, this.userProfile);
+ IdentityCreatorArguments(
+ this.accountId,
+ this.userProfile,
+ {
+ this.identity,
+ this.actionType = IdentityActionType.create
+ }
+ );
@override
- List