queryById method

void queryById({
  1. String? beforeId,
  2. String? afterId,
  3. Jid? jid,
})

Implementation

void queryById({String? beforeId, String? afterId, Jid? jid}) {
  if (beforeId == null && afterId == null && jid == null) {
    queryAll();
  } else {
    var iqStanza = IqStanza(AbstractStanza.getRandomId(), IqStanzaType.SET);
    var query = QueryElement();
    query.setXmlns('urn:xmpp:mam:2');
    query.setQueryId(AbstractStanza.getRandomId());
    iqStanza.addChild(query);
    var x = XElement.build();
    x.setType(FormType.SUBMIT);
    query.addChild(x);
    x.addField(FieldElement.build(
        varAttr: 'FORM_TYPE', typeAttr: 'hidden', value: 'urn:xmpp:mam:2'));
    if (beforeId != null) {
      x.addField(FieldElement.build(varAttr: 'beforeId', value: beforeId));
    }
    if (afterId != null) {
      x.addField(FieldElement.build(varAttr: 'afterId', value: afterId));
    }
    if (jid != null) {
      x.addField(FieldElement.build(varAttr: 'with', value: jid.userAtDomain));
    }
    _connection.writeStanza(iqStanza);
  }
}