addPrivateMessage method

void addPrivateMessage(
  1. RemoteActivityData message
)

Implementation

void addPrivateMessage(RemoteActivityData message) {
  if (message.identity != null) {
    final identity = message.identity?.identity ?? "";
    final name = message.identity?.name ?? "Unknown";

    checkAndCreatePrivateChat(identity, name);
    _privateChat[identity]?.chats.add(message);

    final chatModel = _privateChat[identity];
    if (chatModel == null) return;

    // ✅ FIXED LOGIC
    // Increase unread if:
    // - Chat page is closed (normal case)
    // - OR Chat page is open but this particular chat is not selected
    if ((chatModel.identity != _privateChatIdentity) || !isPrivateChatOpen) {
      chatModel.unreadCount++;
      increaseUnreadPrivateChatCount();
    }
  } else {
    final identity = message.userIdentity ?? "Unknown";
    final name = message.userName ?? "Unknown";

    _privateChat.putIfAbsent(
      identity,
      () => PrivateChatModel(identity: identity, name: name, chats: []),
    );
    _privateChat[identity]?.chats.add(message);
  }

  notifyListeners();
  sendPrivateChatEvent(UpdateView());
}