maskEmail method
Masks the local part of an email address before @.
Use visibleStart and visibleEnd to control the visible characters in
the local part. Set maskDomain to true to also mask the domain using
domainVisibleStart and domainVisibleEnd.
Example:
'user@example.com'.maskEmail(visibleStart: 1, visibleEnd: 0); // u***@example.com
'john.doe@gmail.com'.maskEmail(visibleStart: 2, visibleEnd: 2); // jo****oe@gmail.com
Implementation
String maskEmail({
int visibleStart = 1,
int visibleEnd = 0,
String maskChar = '*',
bool maskDomain = false,
int domainVisibleStart = 0,
int domainVisibleEnd = 0,
bool maskIfShorter = false,
}) {
if (_isEmptyOrNull) return '';
final email = this!.trim();
final atIndex = email.indexOf('@');
if (atIndex <= 0 || atIndex >= email.length - 1) {
return email.mask(
visibleStart: visibleStart,
visibleEnd: visibleEnd,
maskChar: maskChar,
maskIfShorter: maskIfShorter,
);
}
final local = email.substring(0, atIndex);
final domain = email.substring(atIndex + 1);
final maskedLocal = local.mask(
visibleStart: visibleStart,
visibleEnd: visibleEnd,
maskChar: maskChar,
maskIfShorter: maskIfShorter,
);
final maskedDomain = maskDomain
? domain.mask(
visibleStart: domainVisibleStart,
visibleEnd: domainVisibleEnd,
maskChar: maskChar,
maskIfShorter: maskIfShorter,
)
: domain;
return '$maskedLocal@$maskedDomain';
}