fixed logic bug with cleaning of presences
This commit is contained in:
		
							parent
							
								
									29e128513d
								
							
						
					
					
						commit
						bae7418756
					
				| @ -34,6 +34,7 @@ import eu.siacs.conversations.utils.OnPhoneContactsLoadedListener; | ||||
| import eu.siacs.conversations.utils.PhoneHelper; | ||||
| import eu.siacs.conversations.utils.UIHelper; | ||||
| import eu.siacs.conversations.xml.Element; | ||||
| import eu.siacs.conversations.xmpp.OnBindListener; | ||||
| import eu.siacs.conversations.xmpp.OnIqPacketReceived; | ||||
| import eu.siacs.conversations.xmpp.OnMessagePacketReceived; | ||||
| import eu.siacs.conversations.xmpp.OnPresencePacketReceived; | ||||
| @ -186,7 +187,6 @@ public class XmppConnectionService extends Service { | ||||
| 				accountChangedListener.onAccountListChangedListener(); | ||||
| 			} | ||||
| 			if (account.getStatus() == Account.STATUS_ONLINE) { | ||||
| 				databaseBackend.clearPresences(account); | ||||
| 				if (account.getXmppConnection().hasFeatureRosterManagment()) { | ||||
| 					updateRoster(account, null); | ||||
| 				} | ||||
| @ -541,6 +541,13 @@ public class XmppConnectionService extends Service { | ||||
| 						} | ||||
| 					} | ||||
| 				}); | ||||
| 		connection.setOnBindListener(new OnBindListener() { | ||||
| 			 | ||||
| 			@Override | ||||
| 			public void onBind(Account account) { | ||||
| 				databaseBackend.clearPresences(account); | ||||
| 			} | ||||
| 		}); | ||||
| 		return connection; | ||||
| 	} | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										7
									
								
								src/eu/siacs/conversations/xmpp/OnBindListener.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								src/eu/siacs/conversations/xmpp/OnBindListener.java
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,7 @@ | ||||
| package eu.siacs.conversations.xmpp; | ||||
| 
 | ||||
| import eu.siacs.conversations.entities.Account; | ||||
| 
 | ||||
| public interface OnBindListener { | ||||
| 	public void onBind(Account account); | ||||
| } | ||||
| @ -86,7 +86,8 @@ public class XmppConnection implements Runnable { | ||||
| 	private OnIqPacketReceived unregisteredIqListener = null; | ||||
| 	private OnMessagePacketReceived messageListener = null; | ||||
| 	private OnStatusChanged statusListener = null; | ||||
| 	private OnTLSExceptionReceived tlsListener; | ||||
| 	private OnTLSExceptionReceived tlsListener = null; | ||||
| 	private OnBindListener bindListener = null; | ||||
| 
 | ||||
| 	public XmppConnection(Account account, PowerManager pm) { | ||||
| 		this.account = account; | ||||
| @ -540,6 +541,9 @@ public class XmppConnection implements Runnable { | ||||
| 				String resource = packet.findChild("bind").findChild("jid") | ||||
| 						.getContent().split("/")[1]; | ||||
| 				account.setResource(resource); | ||||
| 				if (bindListener !=null) { | ||||
| 					bindListener.onBind(account); | ||||
| 				} | ||||
| 				account.setStatus(Account.STATUS_ONLINE); | ||||
| 				if (streamFeatures.hasChild("sm")) { | ||||
| 					EnablePacket enable = new EnablePacket(); | ||||
| @ -694,6 +698,10 @@ public class XmppConnection implements Runnable { | ||||
| 		this.tlsListener = listener; | ||||
| 	} | ||||
| 	 | ||||
| 	public void setOnBindListener(OnBindListener listener) { | ||||
| 		this.bindListener = listener; | ||||
| 	} | ||||
| 
 | ||||
| 	public void disconnect(boolean force) { | ||||
| 		changeStatus(Account.STATUS_OFFLINE); | ||||
| 		Log.d(LOGTAG,"disconnecting"); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Daniel Gultsch
						Daniel Gultsch