TF-2168 Fix mailto invalid recipient

(cherry picked from commit c559daeb1029c96103e3bca951317d878a837a5c)
This commit is contained in:
dab246
2023-09-26 16:50:55 +07:00
committed by Dat H. Pham
parent 92dc0dbe7e
commit 6710702924
8 changed files with 91 additions and 39 deletions
@@ -440,14 +440,16 @@ class ComposerController extends BaseController {
toAddressExpandMode.value = ExpandMode.COLLAPSE;
_updateStatusEmailSendButton();
break;
case EmailActionType.composeFromMailtoURL:
if (GetUtils.isEmail(arguments.uri ?? '')) {
listToEmailAddress.add(EmailAddress(null, arguments.uri));
} else {
listToEmailAddress.add(EmailAddress(null, 'invalid'));
case EmailActionType.composeFromMailtoUri:
if (arguments.subject != null) {
setSubjectEmail(arguments.subject!);
subjectEmailInputController.text = arguments.subject!;
}
if (arguments.emailAddress != null) {
listToEmailAddress.add(arguments.emailAddress!);
isInitialRecipient.value = true;
toAddressExpandMode.value = ExpandMode.COLLAPSE;
}
isInitialRecipient.value = true;
toAddressExpandMode.value = ExpandMode.COLLAPSE;
_updateStatusEmailSendButton();
break;
case EmailActionType.reply:
@@ -16,7 +16,7 @@ class ComposerArguments extends RouterArguments {
final List<Attachment>? attachments;
final Role? mailboxRole;
final SendingEmail? sendingEmail;
final String? uri;
final String? subject;
final MessageIdsHeaderValue? messageId;
final MessageIdsHeaderValue? references;
@@ -29,7 +29,7 @@ class ComposerArguments extends RouterArguments {
this.emailAddress,
this.listSharedMediaFile,
this.sendingEmail,
this.uri,
this.subject,
this.messageId,
this.references,
});
@@ -58,10 +58,11 @@ class ComposerArguments extends RouterArguments {
emailAddress: emailAddress
);
factory ComposerArguments.fromMailtoURL(String? uri) =>
factory ComposerArguments.fromMailtoUri({EmailAddress? emailAddress, String? subject}) =>
ComposerArguments(
emailActionType: EmailActionType.composeFromMailtoURL,
uri: uri
emailActionType: EmailActionType.composeFromMailtoUri,
emailAddress: emailAddress,
subject: subject,
);
factory ComposerArguments.editDraftEmail(PresentationEmail presentationEmail) =>
@@ -140,7 +141,7 @@ class ComposerArguments extends RouterArguments {
emailAddress,
listSharedMediaFile,
sendingEmail,
uri,
subject,
messageId,
references,
];
@@ -405,7 +405,10 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
if (isHasDataFromRoute) {
if (isRedirectToMailtoURL) {
mailboxDashBoardController.goToComposer(
ComposerArguments.fromMailtoURL(navigationRouter?.emailAddress)
ComposerArguments.fromMailtoUri(
emailAddress: navigationRouter?.emailAddress,
subject: navigationRouter?.subject
)
);
}
@@ -39,7 +39,7 @@ class MailtoUrlController extends ReloadableController {
if (parameters.containsKey('uri')) {
final mailtoArgument = MailtoArguments(
session: session,
emailAddress: parameters['uri']
mailtoUri: parameters['uri']
);
popAndPush(
RouteUtils.generateNavigationRoute(
@@ -1,22 +1,17 @@
import 'package:jmap_dart_client/jmap/core/session/session.dart';
import 'package:tmail_ui_user/main/routes/app_routes.dart';
import 'package:tmail_ui_user/main/routes/route_utils.dart';
import 'package:tmail_ui_user/main/routes/router_arguments.dart';
class MailtoArguments extends RouterArguments {
final Session session;
final String? emailAddress;
final String? mailtoUri;
MailtoArguments({required this.session, this.emailAddress});
MailtoArguments({required this.session, this.mailtoUri});
Map<String, String?> toMapRouter() {
return {
'routeName': AppRoutes.mailtoURL,
'emailAddress': emailAddress
};
}
Map<String, String?> toMapRouter() => RouteUtils.parseMapMailtoFromUri(mailtoUri);
@override
List<Object?> get props => [session, emailAddress];
List<Object?> get props => [session, mailtoUri];
}