From 67f0b702ab8f00d09c7177ec91e893a9b47ae722 Mon Sep 17 00:00:00 2001 From: dab246 Date: Thu, 16 Nov 2023 00:29:24 +0700 Subject: [PATCH] TF-1718 Handle unsubscribe mail by https links Signed-off-by: dab246 (cherry picked from commit 7f8843fae854a2ed8ba7ea43b80de84044923d28) --- .../controller/single_email_controller.dart | 16 +++++++++++++++- lib/l10n/intl_messages.arb | 8 +++++++- lib/main/localizations/app_localizations.dart | 7 +++++++ lib/main/utils/app_utils.dart | 4 ++-- 4 files changed, 31 insertions(+), 4 deletions(-) diff --git a/lib/features/email/presentation/controller/single_email_controller.dart b/lib/features/email/presentation/controller/single_email_controller.dart index 0d608d321..b64f5b4c8 100644 --- a/lib/features/email/presentation/controller/single_email_controller.dart +++ b/lib/features/email/presentation/controller/single_email_controller.dart @@ -1404,7 +1404,11 @@ class SingleEmailController extends BaseController with AppLoaderMixin { context, '', AppLocalizations.of(context).unsubscribe, - onConfirmAction: () => {}, + onConfirmAction: () { + if (emailUnsubscribe.value?.httpLinks.isNotEmpty == true) { + _handleUnsubscribeMailByHttpsLink(context, emailUnsubscribe.value!.httpLinks); + } + }, showAsBottomSheet: true, title: AppLocalizations.of(context).unsubscribeMail, icon: SvgPicture.asset(imagePaths.icEmpty), @@ -1427,4 +1431,14 @@ class SingleEmailController extends BaseController with AppLoaderMixin { ] ); } + + void _handleUnsubscribeMailByHttpsLink(BuildContext context, List httpLinks) async { + log('SingleEmailController::_handleUnsubscribeMailByHttpsLink:httpLinks: $httpLinks'); + final result = await AppUtils.launchLink(httpLinks.first); + if (result && context.mounted) { + _appToast.showToastSuccessMessage( + context, + AppLocalizations.of(context).unsubscribedFromThisMailingList); + } + } } \ No newline at end of file diff --git a/lib/l10n/intl_messages.arb b/lib/l10n/intl_messages.arb index 33d71fd7c..8808c329c 100644 --- a/lib/l10n/intl_messages.arb +++ b/lib/l10n/intl_messages.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2023-11-16T00:13:28.374001", + "@@last_modified": "2023-11-16T00:29:04.650547", "initializing_data": "Initializing data...", "@initializing_data": { "type": "text", @@ -3511,5 +3511,11 @@ "type": "text", "placeholders_order": [], "placeholders": {} + }, + "unsubscribedFromThisMailingList": "Unsubscribed from this mailing list", + "@unsubscribedFromThisMailingList": { + "type": "text", + "placeholders_order": [], + "placeholders": {} } } \ No newline at end of file diff --git a/lib/main/localizations/app_localizations.dart b/lib/main/localizations/app_localizations.dart index 6668ad58e..3c9971fb6 100644 --- a/lib/main/localizations/app_localizations.dart +++ b/lib/main/localizations/app_localizations.dart @@ -3645,4 +3645,11 @@ class AppLocalizations { name: 'unsubscribeMailDialogMessage', ); } + + String get unsubscribedFromThisMailingList { + return Intl.message( + 'Unsubscribed from this mailing list', + name: 'unsubscribedFromThisMailingList', + ); + } } \ No newline at end of file diff --git a/lib/main/utils/app_utils.dart b/lib/main/utils/app_utils.dart index 93a0723ed..bce6ae53d 100644 --- a/lib/main/utils/app_utils.dart +++ b/lib/main/utils/app_utils.dart @@ -25,8 +25,8 @@ class AppUtils { ); } - static Future launchLink(String url, {bool isNewTab = true}) async { - await launchUrl( + static Future launchLink(String url, {bool isNewTab = true}) async { + return await launchUrl( Uri.parse(url), webOnlyWindowName: isNewTab ? '_blank' : '_self', mode: LaunchMode.externalApplication