extracting stanza-id where by=account
This commit is contained in:
parent
a5181b22e0
commit
07a71d312a
|
@ -31,6 +31,7 @@ import eu.siacs.conversations.http.HttpConnectionManager;
|
||||||
import eu.siacs.conversations.services.MessageArchiveService;
|
import eu.siacs.conversations.services.MessageArchiveService;
|
||||||
import eu.siacs.conversations.services.XmppConnectionService;
|
import eu.siacs.conversations.services.XmppConnectionService;
|
||||||
import eu.siacs.conversations.utils.CryptoHelper;
|
import eu.siacs.conversations.utils.CryptoHelper;
|
||||||
|
import eu.siacs.conversations.utils.Xmlns;
|
||||||
import eu.siacs.conversations.xml.Element;
|
import eu.siacs.conversations.xml.Element;
|
||||||
import eu.siacs.conversations.xmpp.OnMessagePacketReceived;
|
import eu.siacs.conversations.xmpp.OnMessagePacketReceived;
|
||||||
import eu.siacs.conversations.xmpp.chatstate.ChatState;
|
import eu.siacs.conversations.xmpp.chatstate.ChatState;
|
||||||
|
@ -208,7 +209,7 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece
|
||||||
private static String extractStanzaId(Element packet, Jid by) {
|
private static String extractStanzaId(Element packet, Jid by) {
|
||||||
for(Element child : packet.getChildren()) {
|
for(Element child : packet.getChildren()) {
|
||||||
if (child.getName().equals("stanza-id")
|
if (child.getName().equals("stanza-id")
|
||||||
&& "urn:xmpp:sid:0".equals(child.getNamespace())
|
&& Xmlns.STANZA_IDS.equals(child.getNamespace())
|
||||||
&& by.equals(child.getAttributeAsJid("by"))) {
|
&& by.equals(child.getAttributeAsJid("by"))) {
|
||||||
return child.getAttribute("id");
|
return child.getAttribute("id");
|
||||||
}
|
}
|
||||||
|
@ -430,7 +431,18 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece
|
||||||
}
|
}
|
||||||
|
|
||||||
if (serverMsgId == null) {
|
if (serverMsgId == null) {
|
||||||
serverMsgId = extractStanzaId(packet, isTypeGroupChat ? conversation.getJid().toBareJid() : account.getServer());
|
final Jid by;
|
||||||
|
final boolean safeToExtract;
|
||||||
|
if (isTypeGroupChat) {
|
||||||
|
by = conversation.getJid().toBareJid();
|
||||||
|
safeToExtract = true; //conversation.getMucOptions().hasFeature(Xmlns.STANZA_IDS);
|
||||||
|
} else {
|
||||||
|
by = account.getJid().toBareJid();
|
||||||
|
safeToExtract = true; //account.getXmppConnection().getFeatures().stanzaIds();
|
||||||
|
}
|
||||||
|
if (safeToExtract) {
|
||||||
|
serverMsgId = extractStanzaId(packet, by);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
message.setCounterpart(counterpart);
|
message.setCounterpart(counterpart);
|
||||||
|
|
|
@ -6,4 +6,5 @@ public final class Xmlns {
|
||||||
public static final String REGISTER = "jabber:iq:register";
|
public static final String REGISTER = "jabber:iq:register";
|
||||||
public static final String BYTE_STREAMS = "http://jabber.org/protocol/bytestreams";
|
public static final String BYTE_STREAMS = "http://jabber.org/protocol/bytestreams";
|
||||||
public static final String HTTP_UPLOAD = "urn:xmpp:http:upload";
|
public static final String HTTP_UPLOAD = "urn:xmpp:http:upload";
|
||||||
|
public static final String STANZA_IDS = "urn:xmpp:sid:0";
|
||||||
}
|
}
|
||||||
|
|
|
@ -1685,6 +1685,10 @@ public class XmppConnection implements Runnable {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean stanzaIds() {
|
||||||
|
return hasDiscoFeature(account.getJid().toBareJid(),Xmlns.STANZA_IDS);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private IqGenerator getIqGenerator() {
|
private IqGenerator getIqGenerator() {
|
||||||
|
|
Loading…
Reference in a new issue