resolve method

Future<String> resolve(
  1. String messageContent
)

Resolves raw messageContent into human readable form.

Implementation

Future<String> resolve(String messageContent) async {
  if (messageContent.trim().isEmpty) {
    return "";
  }

  final messageParts = messageContent.split(" ");
  final outputBuffer = StringBuffer();

  for (final part in messageParts) {
    outputBuffer.write(" ");

    final userMatch = Regexes.userMentionRegex.firstMatch(part);
    if (userMatch != null) {
      outputBuffer.write(await _resoleUserMention(userMatch, part));
      continue;
    }

    final roleMatch = Regexes.roleMentionRegex.firstMatch(part);
    if (roleMatch != null) {
      outputBuffer.write(await _resolveRoleMention(roleMatch, part));
      continue;
    }

    final everyoneMatch = Regexes.everyoneMentionRegex.firstMatch(part);
    if (everyoneMatch != null) {
      outputBuffer.write(await _resolveEveryone(everyoneMatch, part));
      continue;
    }

    final channelMatch = Regexes.channelMentionRegex.firstMatch(part);
    if (channelMatch != null) {
      outputBuffer.write(await _resolveChannel(channelMatch, part));
      continue;
    }

    final emojiMatch = Regexes.emojiMentionRegex.firstMatch(part);
    if (emojiMatch != null) {
      outputBuffer.write(await _resolveEmoji(emojiMatch, part));
      continue;
    }

    outputBuffer.write(part);
  }

  return outputBuffer.toString().trim();
}