emailValidator function

String? emailValidator(
  1. String elementValue,
  2. BuildContext context
)

Implementation

String? emailValidator(String elementValue, BuildContext context) {
  final value = elementValue.trim().toLowerCase();
  final localizations = HyttaHubLocalizations.of(context)!;
  if (value.isEmpty) {
    return localizations.loginEmailEmptyError;
  }

  if (value.toLowerCase() != elementValue) {
    return localizations.emailLowercaseError;
  }

  if (value.trim().length != elementValue.length) {
    return localizations.emailLeadingTrailingSpacesError;
  }

  if (value.length > 254) {
    return localizations.loginEmailTooLongError;
  }
  final emailRegex = WrappedRegExp(
    r"^[a-zA-Z0-9.a-zA-Z0-9.!#$%&'*+-/=?^_`{|}~]+@[a-zA-Z0-9]+\.[a-zA-Z]+",
  );
  if (!emailRegex.hasMatch(value)) {
    return localizations.loginEmailInvalidFormatError;
  }

  final firebaseReservedPattern = WrappedRegExp(r"^__.*__$");
  if (firebaseReservedPattern.hasMatch(value)) {
    return localizations.loginEmailReservedError;
  }

  return null;
}