onReceivedMessageReactionChanged method

void onReceivedMessageReactionChanged(
  1. List<V2TIMMessageReactionChangeInfo> changeInfos, [
  2. bool isLocalChange = false
])

Callback for receiving message reaction was updated function(V2TimMessage)

Implementation

void onReceivedMessageReactionChanged(
  List<V2TIMMessageReactionChangeInfo> changeInfos, [
  bool isLocalChange = false,
]) {
  if (isLocalChange) {
    for (final message in changeInfos) {
      for (final reaction in message.reactionList) {
        messageReactionUpdatingList.add((message.messageID, reaction.reactionID));
      }
    }
  } else {
    messageReactionUpdatingList.clear();
  }

  for (final e in changeInfos) {
    final List<V2TimMessageReaction> currentReactionList = _messageReactionMap[e.messageID] ?? [];
    for (final reaction in e.reactionList) {
      final targetIndex = currentReactionList.indexWhere((e) => e.reactionID == reaction.reactionID);
      if (targetIndex > -1) {
        if (reaction.totalUserCount > 0) {
          currentReactionList[targetIndex] = reaction;
        } else {
          currentReactionList.removeAt(targetIndex);
        }
      } else if (reaction.totalUserCount > 0) {
        currentReactionList.add(reaction);
      }
    }

    _messageReactionMap[e.messageID] = currentReactionList;

    if ((_messageReactionMap[e.messageID] ?? []).isEmpty) {
      _messageReactionMap.remove(e.messageID);
    }
  }
  setMessageReactionMap(null, (changeInfos.map((e) => e.messageID)).toList());
}