CubeMessage.fromStanza constructor

CubeMessage.fromStanza(
  1. MessageStanza stanza
)

Implementation

CubeMessage.fromStanza(MessageStanza stanza) {
  body = stanza.body;

  XmppElement? stanzaExtraParams =
      stanza.getChild(ExtraParamsElement.ELEMENT_NAME);
  if (stanzaExtraParams != null) {
    ExtraParamsElement extraParams =
        ExtraParamsElement.fromStanza(stanzaExtraParams);

    properties = extraParams.getParams();

    dialogId = properties['dialog_id'];

    var dateSentRaw = properties['date_sent'];
    if (dateSentRaw != null) {
      try {
        dateSent = int.parse(dateSentRaw);
      } catch (e) {
        dateSent = double.parse(dateSentRaw).toInt();
      }
    }

    attachments = extraParams.getAttachments();
  }

  String? packetId = stanza.id;
  if (packetId != null) {
    messageId =
        ObjectId.isValid(packetId) ? packetId : properties['message_id'];
  } else {
    messageId = properties['message_id'];
  }

  markable = stanza.getChild('markable') != null;

  XmppElement? destroyElement =
      stanza.getChild(SelfDestroyElement.ELEMENT_NAME);
  if (destroyElement != null) {
    destroyAfter = SelfDestroyElement.fromStanza(destroyElement).after;
  }

  Jid? senderJid = stanza.fromJid;
  if (senderJid != null) {
    if (MessageStanzaType.CHAT == stanza.type) {
      senderId = getUserIdFromJid(senderJid);
    } else if (MessageStanzaType.GROUPCHAT == stanza.type) {
      senderId = getUserIdFromGroupChatJid(senderJid);
    } else if (MessageStanzaType.HEADLINE == stanza.type) {
      senderId = getUserIdFromJid(senderJid);
    }
  }

  Jid? receiverJid = stanza.toJid;
  if (receiverJid != null) {
    recipientId = getUserIdFromJid(receiverJid);
  }
}