queryByTime method
Implementation
void queryByTime({DateTime? start, DateTime? end, Jid? jid}) {
if (start == null && end == 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 (start != null) {
final iso8601 = start.toUtc().toIso8601String();
final startStr = iso8601.substring(0, iso8601.length - 4) + 'Z';
x.addField(FieldElement.build(varAttr: 'start', value: startStr));
}
if (end != null) {
final iso8601 = end.toUtc().toIso8601String();
final endStr = iso8601.substring(0, iso8601.length - 4) + 'Z';
x.addField(FieldElement.build(varAttr: 'end', value: endStr));
}
if (jid != null) {
x.addField(FieldElement.build(varAttr: 'with', value: jid.userAtDomain));
}
_connection.writeStanza(iqStanza);
}
}