From 5f053be2de0d2361fef960399f04ed572e183a3f Mon Sep 17 00:00:00 2001 From: dab246 Date: Tue, 12 Sep 2023 02:17:54 +0700 Subject: [PATCH] TF-2134 Open composer from mailto uri (cherry picked from commit 964013fb35ee6a7ab98f7d7c4a1146d87843dd81) --- .../composer/presentation/composer_controller.dart | 10 ++++++++++ .../composer/presentation/composer_view.dart | 1 + .../composer/presentation/composer_view_web.dart | 1 + .../presentation/model/composer_arguments.dart | 13 +++++++++++-- model/lib/email/email_action_type.dart | 1 + 5 files changed, 24 insertions(+), 2 deletions(-) diff --git a/lib/features/composer/presentation/composer_controller.dart b/lib/features/composer/presentation/composer_controller.dart index fee056e80..7699285d7 100644 --- a/lib/features/composer/presentation/composer_controller.dart +++ b/lib/features/composer/presentation/composer_controller.dart @@ -470,6 +470,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')); + } + isInitialRecipient.value = true; + toAddressExpandMode.value = ExpandMode.COLLAPSE; + _updateStatusEmailSendButton(); + break; case EmailActionType.reply: case EmailActionType.replyAll: _initEmailAddress( diff --git a/lib/features/composer/presentation/composer_view.dart b/lib/features/composer/presentation/composer_view.dart index 1f0d4838a..7650a5d16 100644 --- a/lib/features/composer/presentation/composer_view.dart +++ b/lib/features/composer/presentation/composer_view.dart @@ -278,6 +278,7 @@ class ComposerView extends BaseComposerView { switch(argsComposer.emailActionType) { case EmailActionType.compose: case EmailActionType.composeFromEmailAddress: + case EmailActionType.composeFromMailtoURL: case EmailActionType.composeFromFileShared: return _buildHtmlEditor( context, diff --git a/lib/features/composer/presentation/composer_view_web.dart b/lib/features/composer/presentation/composer_view_web.dart index eaa74e1d8..0744bdc80 100644 --- a/lib/features/composer/presentation/composer_view_web.dart +++ b/lib/features/composer/presentation/composer_view_web.dart @@ -387,6 +387,7 @@ class ComposerView extends BaseComposerView { switch(argsComposer.emailActionType) { case EmailActionType.compose: case EmailActionType.composeFromEmailAddress: + case EmailActionType.composeFromMailtoURL: case EmailActionType.composeFromFileShared: return _buildHtmlEditor( context, diff --git a/lib/features/email/presentation/model/composer_arguments.dart b/lib/features/email/presentation/model/composer_arguments.dart index ffe02607c..c82aa71c0 100644 --- a/lib/features/email/presentation/model/composer_arguments.dart +++ b/lib/features/email/presentation/model/composer_arguments.dart @@ -15,6 +15,7 @@ class ComposerArguments extends RouterArguments { final List? attachments; final Role? mailboxRole; final SendingEmail? sendingEmail; + final String? uri; ComposerArguments({ this.emailActionType = EmailActionType.compose, @@ -24,7 +25,8 @@ class ComposerArguments extends RouterArguments { this.mailboxRole, this.emailAddress, this.listSharedMediaFile, - this.sendingEmail + this.sendingEmail, + this.uri, }); factory ComposerArguments.fromSendingEmail(SendingEmail sendingEmail) => @@ -51,6 +53,12 @@ class ComposerArguments extends RouterArguments { emailAddress: emailAddress ); + factory ComposerArguments.fromMailtoURL(String? uri) => + ComposerArguments( + emailActionType: EmailActionType.composeFromMailtoURL, + uri: uri + ); + factory ComposerArguments.editDraftEmail(PresentationEmail presentationEmail) => ComposerArguments( emailActionType: EmailActionType.editDraft, @@ -114,6 +122,7 @@ class ComposerArguments extends RouterArguments { mailboxRole, emailAddress, listSharedMediaFile, - sendingEmail + sendingEmail, + uri, ]; } \ No newline at end of file diff --git a/model/lib/email/email_action_type.dart b/model/lib/email/email_action_type.dart index ef5bdf4fb..fb13defdf 100644 --- a/model/lib/email/email_action_type.dart +++ b/model/lib/email/email_action_type.dart @@ -14,6 +14,7 @@ enum EmailActionType { composeFromContentShared, composeFromFileShared, composeFromEmailAddress, + composeFromMailtoURL, reopenComposerBrowser, moveToTrash, deletePermanently,