TF-1677: Support validation email for something@localhost case

(cherry picked from commit e74208941e8e5a2480bb444eca6b462bc576eb94)
This commit is contained in:
HuyNguyen
2023-04-26 14:36:25 +07:00
committed by Dat Vu
parent 136a40b0e3
commit 1d6b8a13bd
3 changed files with 8 additions and 2 deletions
@@ -18,6 +18,7 @@ import 'package:tmail_ui_user/features/contact/presentation/widgets/contact_inpu
import 'package:tmail_ui_user/features/contact/presentation/widgets/contact_suggestion_box_item.dart'; import 'package:tmail_ui_user/features/contact/presentation/widgets/contact_suggestion_box_item.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/menu/settings_utils.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/menu/settings_utils.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
import 'package:tmail_ui_user/main/utils/app_utils.dart';
typedef OnSuggestionContactCallbackAction = Future<List<EmailAddress>> Function(String query); typedef OnSuggestionContactCallbackAction = Future<List<EmailAddress>> Function(String query);
typedef OnAddListContactCallbackAction = Function(List<EmailAddress> listEmailAddress); typedef OnAddListContactCallbackAction = Function(List<EmailAddress> listEmailAddress);
@@ -256,7 +257,7 @@ class _AutocompleteContactTextFieldWithTagsState extends State<AutocompleteConta
} }
bool _isValidAllEmailAddress(List<EmailAddress> addedEmailAddress) { bool _isValidAllEmailAddress(List<EmailAddress> addedEmailAddress) {
return addedEmailAddress.every((addedMail) => addedMail.emailAddress.isEmail); return addedEmailAddress.every((addedMail) => addedMail.emailAddress.isEmail || AppUtils.isEmailLocalhost(addedMail.emailAddress));
} }
bool _inputFieldIsEmpty() { bool _inputFieldIsEmpty() {
@@ -9,6 +9,7 @@ import 'package:get/get.dart';
import 'package:jmap_dart_client/jmap/mail/email/email_address.dart'; import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
import 'package:model/extensions/email_address_extension.dart'; import 'package:model/extensions/email_address_extension.dart';
import 'package:tmail_ui_user/features/contact/presentation/widgets/gradient_color_avatar_icon.dart'; import 'package:tmail_ui_user/features/contact/presentation/widgets/gradient_color_avatar_icon.dart';
import 'package:tmail_ui_user/main/utils/app_utils.dart';
typedef DeleteContactCallbackAction = Function(EmailAddress contactDeleted); typedef DeleteContactCallbackAction = Function(EmailAddress contactDeleted);
@@ -84,7 +85,7 @@ class ContactInputTagItem extends StatelessWidget {
} }
} }
bool _isValidEmailAddress(String value) => value.isEmail; bool _isValidEmailAddress(String value) => value.isEmail || AppUtils.isEmailLocalhost(value);
Color _getTagBackgroundColor() { Color _getTagBackgroundColor() {
if (lastTagFocused && isLastContact) { if (lastTagFocused && isLastContact) {
+4
View File
@@ -32,4 +32,8 @@ class AppUtils {
static bool isDirectionRTL(BuildContext context) { static bool isDirectionRTL(BuildContext context) {
return intl.Bidi.isRtlLanguage(Localizations.localeOf(context).languageCode); return intl.Bidi.isRtlLanguage(Localizations.localeOf(context).languageCode);
} }
static bool isEmailLocalhost(String email) {
return RegExp(r'^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@localhost$').hasMatch(email);
}
} }