updateReactionsOnMessage method

BaseMessage updateReactionsOnMessage(
  1. BaseMessage message,
  2. String reaction,
  3. bool add
)

Implementation

BaseMessage updateReactionsOnMessage(
    BaseMessage message, String reaction, bool add) {
  ReactionCount reactionCount =
      ReactionCount(reaction: reaction, count: 1, reactedByMe: true);
  int match =
      message.reactions.indexWhere((element) => element.reaction == reaction);
  if (add) {
    if (match == -1) {
      message.reactions.add(reactionCount);
    } else if (message.reactions[match].reactedByMe == false) {
      message.reactions[match].reactedByMe = true;
      if (message.reactions[match].count != null) {
        message.reactions[match].count = message.reactions[match].count! + 1;
      }
    }
  } else {
    if (match != -1 && message.reactions[match].reactedByMe == true) {
      if (message.reactions[match].count == 1) {
        message.reactions.removeAt(match);
      } else {
        message.reactions[match].reactedByMe = false;
        if (message.reactions[match].count != null) {
          message.reactions[match].count =
              message.reactions[match].count! - 1;
        }
      }
    }
  }

  return message;
}