mark conversation as read when displayed marker from another client is received
This commit is contained in:
		
							parent
							
								
									cc76e15b95
								
							
						
					
					
						commit
						f671938e84
					
				| @ -1,6 +1,7 @@ | ||||
| package eu.siacs.conversations.parser; | ||||
| 
 | ||||
| import android.os.SystemClock; | ||||
| import android.util.Log; | ||||
| import net.java.otr4j.session.Session; | ||||
| import net.java.otr4j.session.SessionStatus; | ||||
| import eu.siacs.conversations.Config; | ||||
| @ -202,10 +203,24 @@ public class MessageParser extends AbstractParser implements | ||||
| 			return null; | ||||
| 		} | ||||
| 		Element message = forwarded.findChild("message"); | ||||
| 		if ((message == null) || (!message.hasChild("body"))) { | ||||
| 		if (message == null) { | ||||
| 			return null; | ||||
| 		} | ||||
| 		if (!message.hasChild("body")) { | ||||
| 			if (status == Message.STATUS_RECEIVED | ||||
| 					&& message.getAttribute("from") != null) { | ||||
| 				parseNonMessage(message, account); | ||||
| 			} else if (status == Message.STATUS_SEND | ||||
| 					&& message.hasChild("displayed", "urn:xmpp:chat-markers:0")) { | ||||
| 				String to = message.getAttribute("to"); | ||||
| 				if (to != null) { | ||||
| 					Conversation conversation = mXmppConnectionService.find( | ||||
| 							mXmppConnectionService.getConversations(), account, | ||||
| 							to.split("/")[0]); | ||||
| 					if (conversation != null) { | ||||
| 						mXmppConnectionService.markRead(conversation, false); | ||||
| 					} | ||||
| 				} | ||||
| 			} | ||||
| 			return null; | ||||
| 		} | ||||
| @ -419,7 +434,8 @@ public class MessageParser extends AbstractParser implements | ||||
| 						lastCarbonMessageReceived = SystemClock | ||||
| 								.elapsedRealtime(); | ||||
| 						notify = false; | ||||
| 						mXmppConnectionService.markRead(message.getConversation()); | ||||
| 						mXmppConnectionService.markRead( | ||||
| 								message.getConversation(), false); | ||||
| 					} else { | ||||
| 						message.markUnread(); | ||||
| 					} | ||||
| @ -436,7 +452,8 @@ public class MessageParser extends AbstractParser implements | ||||
| 							|| NotificationService | ||||
| 									.wasHighlightedOrPrivate(message); | ||||
| 				} else { | ||||
| 					mXmppConnectionService.markRead(message.getConversation()); | ||||
| 					mXmppConnectionService.markRead(message.getConversation(), | ||||
| 							false); | ||||
| 					lastCarbonMessageReceived = SystemClock.elapsedRealtime(); | ||||
| 					notify = false; | ||||
| 				} | ||||
|  | ||||
| @ -1631,16 +1631,19 @@ public class XmppConnectionService extends Service { | ||||
| 		return null; | ||||
| 	} | ||||
| 
 | ||||
| 	public void markRead(Conversation conversation) { | ||||
| 	public void markRead(Conversation conversation, boolean calledByUi) { | ||||
| 		conversation.markRead(); | ||||
| 		mNotificationService.clear(conversation); | ||||
| 		String id = conversation.popLatestMarkableMessageId(); | ||||
| 		if (confirmMessages() && id != null) { | ||||
| 		if (confirmMessages() && id != null && calledByUi) { | ||||
| 			Account account = conversation.getAccount(); | ||||
| 			String to = conversation.getContactJid(); | ||||
| 			this.sendMessagePacket(conversation.getAccount(), | ||||
| 					mMessageGenerator.confirm(account, to, id)); | ||||
| 		} | ||||
| 		if (!calledByUi) { | ||||
| 			updateConversationUi(); | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	public void failWaitingOtrMessages(Conversation conversation) { | ||||
|  | ||||
| @ -156,7 +156,7 @@ public class ConversationActivity extends XmppActivity implements | ||||
| 					openConversation(getSelectedConversation()); | ||||
| 					if (!getSelectedConversation().isRead()) { | ||||
| 						xmppConnectionService | ||||
| 								.markRead(getSelectedConversation()); | ||||
| 								.markRead(getSelectedConversation(),true); | ||||
| 						listView.invalidateViews(); | ||||
| 					} | ||||
| 				} | ||||
|  | ||||
| @ -494,7 +494,7 @@ public class ConversationFragment extends Fragment { | ||||
| 			getActivity().invalidateOptionsMenu(); | ||||
| 			updateChatMsgHint(); | ||||
| 			if (!activity.shouldPaneBeOpen()) { | ||||
| 				activity.xmppConnectionService.markRead(conversation); | ||||
| 				activity.xmppConnectionService.markRead(conversation,true); | ||||
| 				activity.updateConversationList(); | ||||
| 			} | ||||
| 			this.updateSendButton(); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 iNPUTmice
						iNPUTmice