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) { | ||||
| 			data.put("with", mam.getWith().toString()); | ||||
| 		} | ||||
| 		if (mam.getStart() != 0) { | ||||
| 			data.put("start", getTimestamp(mam.getStart())); | ||||
| 		final long start = 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(); | ||||
| 		query.addChild(data); | ||||
| 		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")) | ||||
| 					|| message.getType() == Message.TYPE_PRIVATE | ||||
| 					|| message.getServerMsgId() != null; | ||||
| 					|| message.getServerMsgId() != null | ||||
| 					|| (query == null && mXmppConnectionService.getMessageArchiveService().isCatchupInProgress(conversation)); | ||||
| 			if (checkForDuplicates) { | ||||
| 				final Message duplicate = conversation.findDuplicateMessage(message); | ||||
| 				if (duplicate != null) { | ||||
|  | ||||
| @ -12,6 +12,7 @@ import eu.siacs.conversations.Config; | ||||
| import eu.siacs.conversations.R; | ||||
| import eu.siacs.conversations.entities.Account; | ||||
| import eu.siacs.conversations.entities.Conversation; | ||||
| import eu.siacs.conversations.entities.Conversational; | ||||
| import eu.siacs.conversations.entities.ReceiptRequest; | ||||
| import eu.siacs.conversations.generator.AbstractGenerator; | ||||
| import eu.siacs.conversations.xml.Namespace; | ||||
| @ -58,9 +59,9 @@ public class MessageArchiveService implements OnAdvancedStreamFeaturesLoaded { | ||||
| 					this.query(conversation, startCatchup, true); | ||||
| 				} | ||||
| 			} | ||||
| 			query = new Query(account, new MamReference(startCatchup), endCatchup); | ||||
| 			query = new Query(account, new MamReference(startCatchup), 0); | ||||
| 		} else { | ||||
| 			query = new Query(account, mamReference, endCatchup); | ||||
| 			query = new Query(account, mamReference, 0); | ||||
| 		} | ||||
| 		synchronized (this.queries) { | ||||
| 			this.queries.add(query); | ||||
| @ -72,12 +73,12 @@ public class MessageArchiveService implements OnAdvancedStreamFeaturesLoaded { | ||||
| 		if (conversation.getLastMessageTransmitted().getTimestamp() < 0 && conversation.countMessages() == 0) { | ||||
| 			query(conversation, | ||||
| 					new MamReference(0), | ||||
| 					System.currentTimeMillis(), | ||||
| 					0, | ||||
| 					true); | ||||
| 		} else { | ||||
| 			query(conversation, | ||||
| 					conversation.getLastMessageTransmitted(), | ||||
| 					System.currentTimeMillis(), | ||||
| 					0, | ||||
| 					true); | ||||
| 		} | ||||
| 	} | ||||
| @ -136,7 +137,7 @@ public class MessageArchiveService implements OnAdvancedStreamFeaturesLoaded { | ||||
| 					query = new Query(conversation, startActual, end, false); | ||||
| 				} | ||||
| 			} | ||||
| 			if (start.greaterThan(end)) { | ||||
| 			if (end != 0 && start.greaterThan(end)) { | ||||
| 				return null; | ||||
| 			} | ||||
| 			this.queries.add(query); | ||||
| @ -224,6 +225,20 @@ public class MessageArchiveService implements OnAdvancedStreamFeaturesLoaded { | ||||
| 		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) { | ||||
| 		synchronized (this.queries) { | ||||
| 			for (Query query : queries) { | ||||
| @ -541,8 +556,10 @@ public class MessageArchiveService implements OnAdvancedStreamFeaturesLoaded { | ||||
| 				builder.append(", start="); | ||||
| 				builder.append(AbstractGenerator.getTimestamp(this.start)); | ||||
| 			} | ||||
| 			builder.append(", end="); | ||||
| 			builder.append(AbstractGenerator.getTimestamp(this.end)); | ||||
| 			if (this.end != 0) { | ||||
| 				builder.append(", end="); | ||||
| 				builder.append(AbstractGenerator.getTimestamp(this.end)); | ||||
| 			} | ||||
| 			builder.append(", order=").append(pagingOrder.toString()); | ||||
| 			if (this.reference != null) { | ||||
| 				if (this.pagingOrder == PagingOrder.NORMAL) { | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Daniel Gultsch
						Daniel Gultsch