TF-3952 Change modal style in Forwarding

Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
dab246
2025-08-08 01:06:50 +07:00
committed by Dat H. Pham
parent 765b7e295b
commit f8d93e738b
10 changed files with 74 additions and 36 deletions
@@ -254,6 +254,7 @@ class _BodyContent extends StatelessWidget {
style: ThemeUtils.textStyleM3HeadlineSmall.copyWith(
color: AppColor.textPrimary,
),
textAlign: TextAlign.center,
),
)
: const SizedBox.shrink();
@@ -42,6 +42,7 @@ mixin MessageDialogActionMixin {
bool useIconAsBasicLogo = false,
bool isScrollContentEnabled = false,
EdgeInsetsGeometry? dialogMargin,
EdgeInsets? outsideDialogPadding,
}
) async {
final responsiveUtils = Get.find<ResponsiveUtils>();
@@ -61,6 +62,10 @@ mixin MessageDialogActionMixin {
confirmText: actionName,
cancelText: hasCancelButton ? cancelTitle ?? AppLocalizations.of(context).cancel : '',
iconWidget: icon,
outsideDialogPadding: outsideDialogPadding ??
(responsiveUtils.isScreenWithShortestSide(context)
? const EdgeInsets.all(16)
: null),
cancelBackgroundButtonColor: cancelButtonColor,
confirmBackgroundButtonColor: actionButtonColor,
cancelLabelButtonColor: cancelLabelButtonColor,
@@ -123,10 +123,11 @@ class ForwardController extends BaseController {
context,
title: AppLocalizations.of(context).deleteRecipient,
AppLocalizations.of(context).messageConfirmationDialogDeleteRecipientForward(emailAddress),
AppLocalizations.of(context).cancel,
cancelTitle: AppLocalizations.of(context).remove,
onCancelAction: () => _handleDeleteRecipientAction({emailAddress}),
showAsBottomSheet: true,
AppLocalizations.of(context).remove,
cancelTitle: AppLocalizations.of(context).cancel,
onCloseButtonAction: popBack,
onConfirmAction: () => _handleDeleteRecipientAction({emailAddress}),
alignCenter: true,
dialogMargin: MediaQuery.paddingOf(context).add(const EdgeInsets.only(bottom: 12)),
);
}
@@ -207,10 +208,11 @@ class ForwardController extends BaseController {
context,
title: AppLocalizations.of(context).deleteRecipient,
AppLocalizations.of(context).messageConfirmationDialogDeleteAllRecipientForward,
AppLocalizations.of(context).cancel,
cancelTitle: AppLocalizations.of(context).remove,
onCancelAction: () => _handleDeleteRecipientAction(listEmailAddress),
showAsBottomSheet: true,
AppLocalizations.of(context).remove,
cancelTitle: AppLocalizations.of(context).cancel,
onConfirmAction: () => _handleDeleteRecipientAction(listEmailAddress),
onCloseButtonAction: popBack,
alignCenter: true,
dialogMargin: MediaQuery.paddingOf(context).add(const EdgeInsets.only(bottom: 12)),
);
}
@@ -23,6 +23,7 @@ import 'package:tmail_ui_user/features/contact/presentation/widgets/contact_sugg
import 'package:tmail_ui_user/features/email/presentation/utils/email_utils.dart';
import 'package:tmail_ui_user/features/manage_account/domain/exceptions/forward_exception.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_config.dart';
import 'package:tmail_ui_user/main/utils/app_utils.dart';
@@ -452,15 +453,27 @@ class _AutocompleteContactTextFieldWithTagsState extends State<AutocompleteConta
VoidCallback? confirmAction,
VoidCallback? cancelAction
}) async {
final appLocalizations = AppLocalizations.of(context);
final forwardWarningMessage = AppConfig.forwardWarningMessage;
final title = forwardWarningMessage != null
? null
: appLocalizations.dialogWarningTitleForForwardsToOtherDomains;
final message = forwardWarningMessage
?? appLocalizations.dialogWarningMessageForForwardsToOtherDomains;
await showConfirmDialogAction(
context,
AppLocalizations.of(context).doYouWantToProceed,
AppLocalizations.of(context).no,
title: AppConfig.getForwardWarningMessage(context),
cancelTitle: AppLocalizations.of(context).yes,
message,
AppLocalizations.of(context).yes,
title: title,
cancelTitle: AppLocalizations.of(context).no,
alignCenter: true,
onConfirmAction: cancelAction,
onCancelAction: confirmAction,
onConfirmAction: confirmAction,
onCancelAction: cancelAction,
onCloseButtonAction: () {
popBack();
cancelAction?.call();
},
);
}
}
@@ -4,6 +4,7 @@ import 'package:core/presentation/utils/responsive_utils.dart';
import 'package:core/presentation/utils/theme_utils.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
import 'package:tmail_ui_user/main/utils/app_config.dart';
class ForwardWarningBanner extends StatelessWidget {
@@ -28,7 +29,9 @@ class ForwardWarningBanner extends StatelessWidget {
color: AppColor.lightGrayEAEDF2,
),
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
crossAxisAlignment: responsiveUtils.isWebDesktop(context)
? CrossAxisAlignment.center
: CrossAxisAlignment.start,
children: [
SvgPicture.asset(
imagePaths.icInfoCircleOutline,
@@ -40,7 +43,8 @@ class ForwardWarningBanner extends StatelessWidget {
const SizedBox(width: 8),
Expanded(
child: Text(
AppConfig.getForwardWarningMessage(context),
AppConfig.forwardWarningMessage ??
AppLocalizations.of(context).messageWarningDialogForForwardsToOtherDomains,
style: ThemeUtils.textStyleInter400.copyWith(
letterSpacing: 0.0,
color: AppColor.steelGray400,
@@ -27,7 +27,7 @@ class KeepCopyInInboxWidget extends StatelessWidget {
}
return Padding(
padding: const EdgeInsets.only(top: 8),
padding: const EdgeInsets.only(top: 8, bottom: 16),
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
@@ -12,7 +12,7 @@ class NumberOfRecipientWidget extends StatelessWidget {
Widget build(BuildContext context) {
final appLocalizations = AppLocalizations.of(context);
return Padding(
padding: const EdgeInsets.symmetric(vertical: 36),
padding: const EdgeInsets.only(top: 20, bottom: 36),
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
+12 -6
View File
@@ -3706,12 +3706,6 @@
"placeholders_order": [],
"placeholders": {}
},
"doYouWantToProceed": "Do you want to proceed?",
"@doYouWantToProceed": {
"type": "text",
"placeholders_order": [],
"placeholders": {}
},
"messageWarningDialogForForwardsToOtherDomains": "You are redirecting emails to another domain. This could be a security threat or considered illegal data extraction.",
"@messageWarningDialogForForwardsToOtherDomains": {
"type": "text",
@@ -4659,5 +4653,17 @@
"type": "text",
"placeholders_order": [],
"placeholders": {}
},
"dialogWarningTitleForForwardsToOtherDomains": "You are redirecting emails to another domain.",
"@dialogWarningTitleForForwardsToOtherDomains": {
"type": "text",
"placeholders_order": [],
"placeholders": {}
},
"dialogWarningMessageForForwardsToOtherDomains": "This could be a security threat or considered illegal data extraction. Do you want to proceed?",
"@dialogWarningMessageForForwardsToOtherDomains": {
"type": "text",
"placeholders_order": [],
"placeholders": {}
}
}
+14 -6
View File
@@ -3848,12 +3848,6 @@ class AppLocalizations {
);
}
String get doYouWantToProceed {
return Intl.message(
'Do you want to proceed?',
name: 'doYouWantToProceed');
}
String get messageWarningDialogForForwardsToOtherDomains {
return Intl.message(
'You are redirecting emails to another domain. This could be a security threat or considered illegal data extraction.',
@@ -4912,4 +4906,18 @@ class AppLocalizations {
name: 'keepACopyInInboxDescription',
);
}
String get dialogWarningTitleForForwardsToOtherDomains {
return Intl.message(
'You are redirecting emails to another domain.',
name: 'dialogWarningTitleForForwardsToOtherDomains',
);
}
String get dialogWarningMessageForForwardsToOtherDomains {
return Intl.message(
'This could be a security threat or considered illegal data extraction. Do you want to proceed?',
name: 'dialogWarningMessageForForwardsToOtherDomains',
);
}
}
+5 -6
View File
@@ -1,10 +1,8 @@
import 'dart:io';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';
import 'package:tmail_ui_user/features/login/data/network/config/oidc_constant.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
class AppConfig {
const AppConfig._();
@@ -57,13 +55,14 @@ class AppConfig {
}
}
static String getForwardWarningMessage(BuildContext context) {
static String? get forwardWarningMessage {
final forwardWarningMessage = dotenv.get(
'FORWARD_WARNING_MESSAGE',
fallback: AppLocalizations.of(context).messageWarningDialogForForwardsToOtherDomains);
'FORWARD_WARNING_MESSAGE',
fallback: '',
);
if (forwardWarningMessage.trim().isEmpty) {
return AppLocalizations.of(context).messageWarningDialogForForwardsToOtherDomains;
return null;
}
return forwardWarningMessage;