maskText method

Future<String> maskText(
  1. String text
)

Implementation

Future<String> maskText(String text) async {
  final bool? maskingEnabled = await getMaskingEnabled();
  if (maskingEnabled!) {
    if ((await _TlConfiguration().get(
              "GlobalScreenSettings/Masking/HasCustomMask",
            ) ??
            "")
        .toString()
        .contains("true")) {
      final String? smallCase = await _TlConfiguration().get(
        "GlobalScreenSettings/Masking/Sensitive/smallCaseAlphabet",
      );
      final String? capitalCase = await _TlConfiguration().get(
        "GlobalScreenSettings/Masking/Sensitive/capitalCaseAlphabet",
      );
      final String? symbol = await _TlConfiguration().get(
        "GlobalScreenSettings/Masking/Sensitive/symbol",
      );
      final String? number = await _TlConfiguration().get(
        "GlobalScreenSettings/Masking/Sensitive/number",
      );

      // Note: The following r"\p{..} expressions have been flagged erroneously as errors in some versions of the IDE
      //       However, they work fine and also do NOT show up in linter, so they do not break CI/CD

      if (smallCase != null) {
        text = text.replaceAll(RegExp(r"\p{Ll}", unicode: true), smallCase);
      }
      if (capitalCase != null) {
        text = text.replaceAll(RegExp(r"\p{Lu}", unicode: true), capitalCase);
      }
      if (symbol != null) {
        text = text.replaceAll(RegExp(r"\p{P}|\p{S}", unicode: true), symbol);
      }
      if (number != null) {
        text = text.replaceAll(RegExp(r"\p{N}", unicode: true), number);
      }
    }
  }
  return text;
}