acceptMessage method

  1. @override
bool acceptMessage(
  1. MessageStanza messageStanza
)

Implementation

@override
bool acceptMessage(MessageStanza messageStanza) {
  XmppElement? stateElement = messageStanza.children.firstWhereOrNull(
      (element) =>
          element.getAttribute("xmlns")?.value ==
          ChatStateElement.NAME_SPACE);
  if (stateElement != null) {
    Jid from = messageStanza.fromJid!;

    int userId;
    String? dialogId;

    if (isGroupChatJid(from)) {
      userId = getUserIdFromGroupChatJid(from);
      dialogId = getDialogIdFromGroupChatJid(from);
    } else {
      userId = getUserIdFromJid(from);
    }

    var state = stateFromString(stateElement.name!);
    if (ChatState.COMPOSING == state) {
      _isTypingStreamController.add(TypingStatus(userId, dialogId));
      return true;
    } else if (ChatState.PAUSED == state) {
      _stopTypingStreamController.add(TypingStatus(userId, dialogId));
      return true;
    }
  }

  return false;
}