TF-4124 fix: support localhost addresses in email validation

This commit is contained in:
dab246
2025-10-27 14:26:05 +07:00
committed by Dat H. Pham
parent 78b1e58519
commit 3a9b8d8205
4 changed files with 15 additions and 5 deletions
@@ -19,7 +19,7 @@ extension HandleRecipientsCollapsedExtensions on ComposerController {
bool get existEmailAddressInvalid => allListEmailAddress
.any(
(emailAddress) => !EmailUtils.isEmailAddressValid(
(emailAddress) => !EmailUtils.isValidEmail(
emailAddress.emailAddress,
),
);
@@ -51,7 +51,7 @@ class RecipientCollapsedItemWidget extends StatelessWidget {
}
Color _getTagBackgroundColor() {
if (EmailUtils.isEmailAddressValid(emailAddress.emailAddress)) {
if (EmailUtils.isValidEmail(emailAddress.emailAddress)) {
return AppColor.grayBackgroundColor;
} else {
return Colors.white;
@@ -59,7 +59,7 @@ class RecipientCollapsedItemWidget extends StatelessWidget {
}
Border _getTagBorder() {
if (EmailUtils.isEmailAddressValid(emailAddress.emailAddress)) {
if (EmailUtils.isValidEmail(emailAddress.emailAddress)) {
return Border.all(
width: 1,
color: AppColor.grayBackgroundColor,
@@ -170,7 +170,7 @@ class RecipientTagItemWidget extends StatelessWidget {
Color _getTagBackgroundColor() {
if (isTagFocused) {
return AppColor.colorItemRecipientSelected;
} else if (EmailUtils.isEmailAddressValid(currentEmailAddress.emailAddress)) {
} else if (EmailUtils.isValidEmail(currentEmailAddress.emailAddress)) {
return AppColor.grayBackgroundColor;
} else {
return Colors.white;
@@ -183,7 +183,7 @@ class RecipientTagItemWidget extends StatelessWidget {
width: 1,
color: AppColor.primaryColor,
);
} else if (EmailUtils.isEmailAddressValid(currentEmailAddress.emailAddress)) {
} else if (EmailUtils.isValidEmail(currentEmailAddress.emailAddress)) {
return Border.all(
width: 1,
color: AppColor.grayBackgroundColor,
@@ -20,6 +20,7 @@ import 'package:tmail_ui_user/features/email/presentation/model/email_unsubscrib
import 'package:tmail_ui_user/features/thread/domain/constants/thread_constants.dart';
import 'package:tmail_ui_user/main/error/capability_validator.dart';
import 'package:tmail_ui_user/main/routes/route_utils.dart';
import 'package:tmail_ui_user/main/utils/app_utils.dart';
class EmailUtils {
static const double desktopItemMaxWidth = 260;
@@ -110,6 +111,15 @@ class EmailUtils {
}
}
static bool isValidEmail(String address) {
try {
return isEmailAddressValid(address) ||
AppUtils.isEmailLocalhost(address);
} catch (_) {
return false;
}
}
static List<String> extractMailtoLinksFromListPost(String listPost) {
try {
if (listPost.trim().isEmpty) return [];