do not use end in catchup mam queries
This commit is contained in:
parent
170fbf0de3
commit
543d1f689b
|
@ -257,10 +257,14 @@ public class IqGenerator extends AbstractGenerator {
|
||||||
} else if (mam.getWith()!=null) {
|
} else if (mam.getWith()!=null) {
|
||||||
data.put("with", mam.getWith().toString());
|
data.put("with", mam.getWith().toString());
|
||||||
}
|
}
|
||||||
if (mam.getStart() != 0) {
|
final long start = mam.getStart();
|
||||||
data.put("start", getTimestamp(mam.getStart()));
|
final long end = mam.getEnd();
|
||||||
|
if (start != 0) {
|
||||||
|
data.put("start", getTimestamp(start));
|
||||||
|
}
|
||||||
|
if (end != 0) {
|
||||||
|
data.put("end", getTimestamp(end));
|
||||||
}
|
}
|
||||||
data.put("end", getTimestamp(mam.getEnd()));
|
|
||||||
data.submit();
|
data.submit();
|
||||||
query.addChild(data);
|
query.addChild(data);
|
||||||
Element set = query.addChild("set", "http://jabber.org/protocol/rsm");
|
Element set = query.addChild("set", "http://jabber.org/protocol/rsm");
|
||||||
|
|
|
@ -519,7 +519,8 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece
|
||||||
|
|
||||||
boolean checkForDuplicates = (isTypeGroupChat && packet.hasChild("delay", "urn:xmpp:delay"))
|
boolean checkForDuplicates = (isTypeGroupChat && packet.hasChild("delay", "urn:xmpp:delay"))
|
||||||
|| message.getType() == Message.TYPE_PRIVATE
|
|| message.getType() == Message.TYPE_PRIVATE
|
||||||
|| message.getServerMsgId() != null;
|
|| message.getServerMsgId() != null
|
||||||
|
|| (query == null && mXmppConnectionService.getMessageArchiveService().isCatchupInProgress(conversation));
|
||||||
if (checkForDuplicates) {
|
if (checkForDuplicates) {
|
||||||
final Message duplicate = conversation.findDuplicateMessage(message);
|
final Message duplicate = conversation.findDuplicateMessage(message);
|
||||||
if (duplicate != null) {
|
if (duplicate != null) {
|
||||||
|
|
|
@ -12,6 +12,7 @@ import eu.siacs.conversations.Config;
|
||||||
import eu.siacs.conversations.R;
|
import eu.siacs.conversations.R;
|
||||||
import eu.siacs.conversations.entities.Account;
|
import eu.siacs.conversations.entities.Account;
|
||||||
import eu.siacs.conversations.entities.Conversation;
|
import eu.siacs.conversations.entities.Conversation;
|
||||||
|
import eu.siacs.conversations.entities.Conversational;
|
||||||
import eu.siacs.conversations.entities.ReceiptRequest;
|
import eu.siacs.conversations.entities.ReceiptRequest;
|
||||||
import eu.siacs.conversations.generator.AbstractGenerator;
|
import eu.siacs.conversations.generator.AbstractGenerator;
|
||||||
import eu.siacs.conversations.xml.Namespace;
|
import eu.siacs.conversations.xml.Namespace;
|
||||||
|
@ -58,9 +59,9 @@ public class MessageArchiveService implements OnAdvancedStreamFeaturesLoaded {
|
||||||
this.query(conversation, startCatchup, true);
|
this.query(conversation, startCatchup, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
query = new Query(account, new MamReference(startCatchup), endCatchup);
|
query = new Query(account, new MamReference(startCatchup), 0);
|
||||||
} else {
|
} else {
|
||||||
query = new Query(account, mamReference, endCatchup);
|
query = new Query(account, mamReference, 0);
|
||||||
}
|
}
|
||||||
synchronized (this.queries) {
|
synchronized (this.queries) {
|
||||||
this.queries.add(query);
|
this.queries.add(query);
|
||||||
|
@ -72,12 +73,12 @@ public class MessageArchiveService implements OnAdvancedStreamFeaturesLoaded {
|
||||||
if (conversation.getLastMessageTransmitted().getTimestamp() < 0 && conversation.countMessages() == 0) {
|
if (conversation.getLastMessageTransmitted().getTimestamp() < 0 && conversation.countMessages() == 0) {
|
||||||
query(conversation,
|
query(conversation,
|
||||||
new MamReference(0),
|
new MamReference(0),
|
||||||
System.currentTimeMillis(),
|
0,
|
||||||
true);
|
true);
|
||||||
} else {
|
} else {
|
||||||
query(conversation,
|
query(conversation,
|
||||||
conversation.getLastMessageTransmitted(),
|
conversation.getLastMessageTransmitted(),
|
||||||
System.currentTimeMillis(),
|
0,
|
||||||
true);
|
true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -136,7 +137,7 @@ public class MessageArchiveService implements OnAdvancedStreamFeaturesLoaded {
|
||||||
query = new Query(conversation, startActual, end, false);
|
query = new Query(conversation, startActual, end, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (start.greaterThan(end)) {
|
if (end != 0 && start.greaterThan(end)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
this.queries.add(query);
|
this.queries.add(query);
|
||||||
|
@ -224,6 +225,20 @@ public class MessageArchiveService implements OnAdvancedStreamFeaturesLoaded {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isCatchupInProgress(Conversation conversation) {
|
||||||
|
synchronized (this.queries) {
|
||||||
|
for(Query query : queries) {
|
||||||
|
if (query.account == conversation.getAccount() && query.isCatchup()) {
|
||||||
|
final Jid with = query.getWith() == null ? null : query.getWith().asBareJid();
|
||||||
|
if ((conversation.getMode() == Conversational.MODE_SINGLE && with == null) || (conversation.getJid().asBareJid().equals(with))) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
boolean queryInProgress(Conversation conversation, XmppConnectionService.OnMoreMessagesLoaded callback) {
|
boolean queryInProgress(Conversation conversation, XmppConnectionService.OnMoreMessagesLoaded callback) {
|
||||||
synchronized (this.queries) {
|
synchronized (this.queries) {
|
||||||
for (Query query : queries) {
|
for (Query query : queries) {
|
||||||
|
@ -541,8 +556,10 @@ public class MessageArchiveService implements OnAdvancedStreamFeaturesLoaded {
|
||||||
builder.append(", start=");
|
builder.append(", start=");
|
||||||
builder.append(AbstractGenerator.getTimestamp(this.start));
|
builder.append(AbstractGenerator.getTimestamp(this.start));
|
||||||
}
|
}
|
||||||
|
if (this.end != 0) {
|
||||||
builder.append(", end=");
|
builder.append(", end=");
|
||||||
builder.append(AbstractGenerator.getTimestamp(this.end));
|
builder.append(AbstractGenerator.getTimestamp(this.end));
|
||||||
|
}
|
||||||
builder.append(", order=").append(pagingOrder.toString());
|
builder.append(", order=").append(pagingOrder.toString());
|
||||||
if (this.reference != null) {
|
if (this.reference != null) {
|
||||||
if (this.pagingOrder == PagingOrder.NORMAL) {
|
if (this.pagingOrder == PagingOrder.NORMAL) {
|
||||||
|
|
Loading…
Reference in a new issue