initChatV2 function

dynamic initChatV2(
  1. dynamic callback()
)

Implementation

initChatV2(Function() callback){
  var user = FirebaseAuth.instance.currentUser;
  if (user == null)
    return;
  chatListenMe = FirebaseFirestore.instance.collection("chat")
      .doc(user.uid).snapshots().listen((querySnapshot) {
    if (querySnapshot.data() != null) {
      _meData = querySnapshot.data()!;
      int _chatCount = _meData["unread_chat"] != null ? toInt(_meData["unread_chat"].toString()) : 0;
      dprint("listen main chat_chatCount=$_chatCount");
      for (var item in _meData.entries){
        dprint("${item.key} ${item.value}");
        //
        if (item.key.startsWith("from_")){
          var _id = item.key.substring(5);
          for (var u in users){
            if (_id == u.id)
              u.lastMessage = item.value;
          }
        }
        if (item.key.startsWith("time_")){
          var _id = item.key.substring(5);
          if (item.value != null)
            for (var u in users){
              if (_id == u.id) {
                u.lastMessageTime = item.value.toDate().toLocal();
              }
            }
        }
        if (item.key.startsWith("count_")){
          var _id = item.key.substring(6);
          for (var u in users){
            if (_id == u.id)
              u.all = toInt(item.value.toString()) + _getCountMyMessagesToUser(_id);
          }
        }
        if (item.key.startsWith("unread_")){
          var _id = item.key.substring(7);
          for (var u in users){
            if (_id == u.id)
              u.unread = toInt(item.value.toString());
          }
        }
      }

      if (unreadMessagesInChat != _chatCount && _chatCount != 0)
        callback();
      // if (_chatCount != chatCount) {
      //   if (playSound != null)
      //     playSound()!;
      //   // sound
      //   //parent.playSound();
      // }

      unreadMessagesInChat = _chatCount;
      users.sort((a, b) => a.compareToAll(b));
      users.sort((a, b) => a.compareToUnread(b));
      redrawMainWindow();
    }
  });
}