From 0c974e2316bf3837b643d221f05e24149c6166f3 Mon Sep 17 00:00:00 2001 From: dab246 Date: Wed, 15 Nov 2023 14:46:06 +0700 Subject: [PATCH] TF-1718 Show Unsubscribe button in email view on web & tablet (cherry picked from commit 367c4ccfea750b2ba2d68d2e620abefdee1fbdf6) --- ...formation_sender_and_receiver_builder.dart | 40 ++++++++++++++----- .../widgets/received_time_builder.dart | 8 ++-- lib/l10n/intl_messages.arb | 8 +++- lib/main/localizations/app_localizations.dart | 7 ++++ 4 files changed, 50 insertions(+), 13 deletions(-) diff --git a/lib/features/email/presentation/widgets/information_sender_and_receiver_builder.dart b/lib/features/email/presentation/widgets/information_sender_and_receiver_builder.dart index 152187a25..ce840034f 100644 --- a/lib/features/email/presentation/widgets/information_sender_and_receiver_builder.dart +++ b/lib/features/email/presentation/widgets/information_sender_and_receiver_builder.dart @@ -1,6 +1,7 @@ - +import 'package:core/presentation/extensions/color_extension.dart'; import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/utils/responsive_utils.dart'; +import 'package:core/presentation/views/button/tmail_button_widget.dart'; import 'package:flutter/material.dart'; import 'package:model/email/presentation_email.dart'; import 'package:model/extensions/presentation_email_extension.dart'; @@ -9,6 +10,7 @@ import 'package:tmail_ui_user/features/email/presentation/controller/single_emai import 'package:tmail_ui_user/features/email/presentation/widgets/email_receiver_widget.dart'; import 'package:tmail_ui_user/features/email/presentation/widgets/email_sender_builder.dart'; import 'package:tmail_ui_user/features/email/presentation/widgets/received_time_builder.dart'; +import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; class InformationSenderAndReceiverBuilder extends StatelessWidget { @@ -45,15 +47,35 @@ class InformationSenderAndReceiverBuilder extends StatelessWidget { children: [ if (emailSelected.from?.isNotEmpty == true) Row(children: [ - Expanded(child: Transform( - transform: Matrix4.translationValues(-5.0, 0.0, 0.0), - child: EmailSenderBuilder( - emailAddress: emailSelected.from!.first, - openEmailAddressDetailAction: controller.openEmailAddressDialog, + Expanded( + child: Row( + children: [ + Flexible(child: Transform( + transform: Matrix4.translationValues(-5.0, 0.0, 0.0), + child: EmailSenderBuilder( + emailAddress: emailSelected.from!.first, + openEmailAddressDetailAction: controller.openEmailAddressDialog, + ) + )), + if (!responsiveUtils.isPortraitMobile(context)) + TMailButtonWidget.fromText( + text: AppLocalizations.of(context).unsubscribe, + textStyle: const TextStyle( + fontWeight: FontWeight.normal, + fontSize: 14, + color: AppColor.colorTextBody, + decoration: TextDecoration.underline, + ), + padding: const EdgeInsetsDirectional.symmetric(vertical: 5, horizontal: 8), + backgroundColor: Colors.transparent, + ), + ], ) - )), - const SizedBox(width: 12), - ReceivedTimeBuilder(emailSelected), + ), + ReceivedTimeBuilder( + emailSelected: emailSelected, + margin: const EdgeInsetsDirectional.only(start: 16), + ), ]), if (emailSelected.numberOfAllEmailAddress() > 0) EmailReceiverWidget( diff --git a/lib/features/email/presentation/widgets/received_time_builder.dart b/lib/features/email/presentation/widgets/received_time_builder.dart index 6fb35ac4e..baee3b2de 100644 --- a/lib/features/email/presentation/widgets/received_time_builder.dart +++ b/lib/features/email/presentation/widgets/received_time_builder.dart @@ -9,17 +9,19 @@ import 'package:model/extensions/presentation_email_extension.dart'; class ReceivedTimeBuilder extends StatelessWidget { final PresentationEmail emailSelected; + final EdgeInsetsGeometry? margin; - const ReceivedTimeBuilder( - this.emailSelected, { + const ReceivedTimeBuilder({ Key? key, + required this.emailSelected, + this.margin, }) : super(key: key); @override Widget build(BuildContext context) { return Container( constraints: const BoxConstraints(maxWidth: 100), - color: Colors.transparent, + margin: margin, child: Text( emailSelected.getReceivedAt( Localizations.localeOf(context).toLanguageTag(), diff --git a/lib/l10n/intl_messages.arb b/lib/l10n/intl_messages.arb index e4f205daa..d636070ee 100644 --- a/lib/l10n/intl_messages.arb +++ b/lib/l10n/intl_messages.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2023-11-10T16:53:43.713688", + "@@last_modified": "2023-11-15T14:44:16.030072", "initializing_data": "Initializing data...", "@initializing_data": { "type": "text", @@ -3493,5 +3493,11 @@ "type": "text", "placeholders_order": [], "placeholders": {} + }, + "unsubscribe": "Unsubscribe", + "@unsubscribe": { + "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 7af9d77f4..b3e975c75 100644 --- a/lib/main/localizations/app_localizations.dart +++ b/lib/main/localizations/app_localizations.dart @@ -3624,4 +3624,11 @@ class AppLocalizations { name: 'enterYourPasswordToSignIn' ); } + + String get unsubscribe { + return Intl.message( + 'Unsubscribe', + name: 'unsubscribe', + ); + } } \ No newline at end of file