TF-1718 Show dialog unsubscribe mail
Signed-off-by: dab246 <tdvu@linagora.com> (cherry picked from commit d29ea95dc63719c35676fd87a82c73c55ee9db0d)
This commit is contained in:
@@ -229,6 +229,8 @@ extension AppColor on Color {
|
||||
static const colorScrollbarThumbColor = Color(0xFFD8E1EB);
|
||||
static const colorDropDownTitleComposer = Color(0xFF79747E);
|
||||
static const colorDropDownItemTitleComposer = Color(0xFF0A0A0A);
|
||||
static const messageDialogColor = Color(0xFF8C9CAF);
|
||||
static const messageDialogHighlightColor = Color(0xFF37383A);
|
||||
|
||||
static const mapGradientColor = [
|
||||
[Color(0xFF21D4FD), Color(0xFFB721FF)],
|
||||
|
||||
@@ -440,6 +440,12 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
||||
if (isShowMessageReadReceipt) {
|
||||
_handleReadReceipt();
|
||||
}
|
||||
|
||||
if (success.emailCurrent?.hasListUnsubscribe == true) {
|
||||
_handleUnsubscribe(success.emailCurrent!.listUnsubscribe);
|
||||
} else {
|
||||
emailUnsubscribe.value = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -956,7 +962,6 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
||||
void handleEmailAction(BuildContext context, PresentationEmail presentationEmail, EmailActionType actionType) {
|
||||
switch(actionType) {
|
||||
case EmailActionType.markAsUnread:
|
||||
popBack();
|
||||
markAsEmailRead(presentationEmail, ReadActions.markAsUnread, MarkReadAction.tap);
|
||||
break;
|
||||
case EmailActionType.markAsStarred:
|
||||
@@ -975,16 +980,17 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
||||
deleteEmailPermanently(context, presentationEmail);
|
||||
break;
|
||||
case EmailActionType.moveToSpam:
|
||||
popBack();
|
||||
moveToSpam(context, presentationEmail);
|
||||
break;
|
||||
case EmailActionType.unSpam:
|
||||
popBack();
|
||||
unSpam(context, presentationEmail);
|
||||
break;
|
||||
case EmailActionType.createRule:
|
||||
quickCreatingRule(context, presentationEmail.from!.first);
|
||||
break;
|
||||
case EmailActionType.unsubscribe:
|
||||
_unsubscribeEmail(context, presentationEmail);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -1392,4 +1398,33 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
void _unsubscribeEmail(BuildContext context, PresentationEmail presentationEmail) {
|
||||
showConfirmDialogAction(
|
||||
context,
|
||||
'',
|
||||
AppLocalizations.of(context).unsubscribe,
|
||||
onConfirmAction: () => {},
|
||||
showAsBottomSheet: true,
|
||||
title: AppLocalizations.of(context).unsubscribeMail,
|
||||
icon: SvgPicture.asset(imagePaths.icEmpty),
|
||||
messageStyle: const TextStyle(
|
||||
color: AppColor.messageDialogColor,
|
||||
fontSize: 14,
|
||||
fontWeight: FontWeight.w500
|
||||
),
|
||||
listTextSpan: [
|
||||
TextSpan(text: AppLocalizations.of(context).unsubscribeMailDialogMessage),
|
||||
TextSpan(
|
||||
text: ' ${presentationEmail.getSenderName()}',
|
||||
style: const TextStyle(
|
||||
color: AppColor.messageDialogHighlightColor,
|
||||
fontSize: 15,
|
||||
fontWeight: FontWeight.w500
|
||||
),
|
||||
),
|
||||
const TextSpan(text: ' ?'),
|
||||
]
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -36,6 +36,7 @@ import 'package:tmail_ui_user/features/email/presentation/widgets/information_se
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/extensions/vacation_response_extension.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/vacation/widgets/vacation_notification_message_widget.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||
import 'package:tmail_ui_user/main/utils/app_utils.dart';
|
||||
|
||||
class EmailView extends GetWidget<SingleEmailController> {
|
||||
@@ -304,6 +305,7 @@ class EmailView extends GetWidget<SingleEmailController> {
|
||||
responsiveUtils: controller.responsiveUtils,
|
||||
emailUnsubscribe: controller.emailUnsubscribe.value,
|
||||
openEmailAddressDetailAction: controller.openEmailAddressDialog,
|
||||
onEmailActionClick: (presentationEmail, actionType) => controller.handleEmailAction(context, presentationEmail, actionType),
|
||||
)),
|
||||
Obx(() {
|
||||
final attachments = controller.attachments.listAttachmentsDisplayedOutSide;
|
||||
@@ -472,7 +474,10 @@ class EmailView extends GetWidget<SingleEmailController> {
|
||||
? const EdgeInsetsDirectional.only(end: 12)
|
||||
: EdgeInsets.zero
|
||||
)
|
||||
..onActionClick((presentationEmail) => controller.handleEmailAction(context, presentationEmail, action))).build();
|
||||
..onActionClick((presentationEmail) {
|
||||
popBack();
|
||||
controller.handleEmailAction(context, presentationEmail, action);
|
||||
})).build();
|
||||
}).toList();
|
||||
}
|
||||
|
||||
@@ -483,6 +488,7 @@ class EmailView extends GetWidget<SingleEmailController> {
|
||||
) {
|
||||
return actionTypes.map((action) {
|
||||
return PopupMenuItem(
|
||||
key: Key('${action.name}_action'),
|
||||
padding: EdgeInsets.zero,
|
||||
child: PopupItemWidget(
|
||||
action.getIcon(controller.imagePaths),
|
||||
@@ -494,7 +500,10 @@ class EmailView extends GetWidget<SingleEmailController> {
|
||||
fontSize: 16,
|
||||
color: Colors.black
|
||||
),
|
||||
onCallbackAction: () => controller.handleEmailAction(context, presentationEmail, action)
|
||||
onCallbackAction: () {
|
||||
popBack();
|
||||
controller.handleEmailAction(context, presentationEmail, action);
|
||||
}
|
||||
)
|
||||
);
|
||||
}).toList();
|
||||
|
||||
@@ -3,12 +3,14 @@ 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/email_action_type.dart';
|
||||
import 'package:model/email/presentation_email.dart';
|
||||
import 'package:model/extensions/presentation_email_extension.dart';
|
||||
import 'package:tmail_ui_user/features/base/widget/email_avatar_builder.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/model/email_unsubscribe.dart';
|
||||
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/email_view_app_bar_widget.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/widgets/received_time_builder.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
|
||||
@@ -19,6 +21,7 @@ class InformationSenderAndReceiverBuilder extends StatelessWidget {
|
||||
final ImagePaths imagePaths;
|
||||
final EmailUnsubscribe? emailUnsubscribe;
|
||||
final OnOpenEmailAddressDetailAction? openEmailAddressDetailAction;
|
||||
final OnEmailActionClick? onEmailActionClick;
|
||||
|
||||
const InformationSenderAndReceiverBuilder({
|
||||
Key? key,
|
||||
@@ -27,6 +30,7 @@ class InformationSenderAndReceiverBuilder extends StatelessWidget {
|
||||
required this.imagePaths,
|
||||
required this.emailUnsubscribe,
|
||||
this.openEmailAddressDetailAction,
|
||||
this.onEmailActionClick,
|
||||
}) : super(key: key);
|
||||
|
||||
@override
|
||||
@@ -70,6 +74,7 @@ class InformationSenderAndReceiverBuilder extends StatelessWidget {
|
||||
),
|
||||
padding: const EdgeInsetsDirectional.symmetric(vertical: 5, horizontal: 8),
|
||||
backgroundColor: Colors.transparent,
|
||||
onTapActionCallback: () => onEmailActionClick?.call(emailSelected, EmailActionType.unsubscribe),
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"@@last_modified": "2023-11-15T14:44:16.030072",
|
||||
"@@last_modified": "2023-11-16T00:13:28.374001",
|
||||
"initializing_data": "Initializing data...",
|
||||
"@initializing_data": {
|
||||
"type": "text",
|
||||
@@ -3499,5 +3499,17 @@
|
||||
"type": "text",
|
||||
"placeholders_order": [],
|
||||
"placeholders": {}
|
||||
},
|
||||
"unsubscribeMail": "Unsubscribe mail",
|
||||
"@unsubscribeMail": {
|
||||
"type": "text",
|
||||
"placeholders_order": [],
|
||||
"placeholders": {}
|
||||
},
|
||||
"unsubscribeMailDialogMessage": "Are you sure you'd like to stop receiving similar messages from",
|
||||
"@unsubscribeMailDialogMessage": {
|
||||
"type": "text",
|
||||
"placeholders_order": [],
|
||||
"placeholders": {}
|
||||
}
|
||||
}
|
||||
@@ -3631,4 +3631,18 @@ class AppLocalizations {
|
||||
name: 'unsubscribe',
|
||||
);
|
||||
}
|
||||
|
||||
String get unsubscribeMail {
|
||||
return Intl.message(
|
||||
'Unsubscribe mail',
|
||||
name: 'unsubscribeMail',
|
||||
);
|
||||
}
|
||||
|
||||
String get unsubscribeMailDialogMessage {
|
||||
return Intl.message(
|
||||
'Are you sure you\'d like to stop receiving similar messages from',
|
||||
name: 'unsubscribeMailDialogMessage',
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user