send otr messages when contacts comes online

iNPUTmice created

Change summary

src/eu/siacs/conversations/parser/PresenceParser.java          | 4 +-
src/eu/siacs/conversations/services/XmppConnectionService.java | 5 +++
src/eu/siacs/conversations/xmpp/OnContactStatusChanged.java    | 2 
3 files changed, 7 insertions(+), 4 deletions(-)

Detailed changes

src/eu/siacs/conversations/parser/PresenceParser.java 🔗

@@ -73,7 +73,7 @@ public class PresenceParser extends AbstractParser {
 					}
 					updateLastseen(packet, account,true);
 					mXmppConnectionService.onContactStatusChanged
-							.onContactStatusChanged(contact);
+							.onContactStatusChanged(contact,true);
 				}
 			} else if (type.equals("unavailable")) {
 				if (fromParts.length != 2) {
@@ -82,7 +82,7 @@ public class PresenceParser extends AbstractParser {
 					contact.removePresence(fromParts[1]);
 				}
 				mXmppConnectionService.onContactStatusChanged
-						.onContactStatusChanged(contact);
+						.onContactStatusChanged(contact,false);
 			} else if (type.equals("subscribe")) {
 				if (contact.getOption(Contact.Options.PREEMPTIVE_GRANT)) {
 					mXmppConnectionService.sendPresenceUpdatesTo(contact);

src/eu/siacs/conversations/services/XmppConnectionService.java 🔗

@@ -98,10 +98,13 @@ public class XmppConnectionService extends Service {
 	public OnContactStatusChanged onContactStatusChanged = new OnContactStatusChanged() {
 
 		@Override
-		public void onContactStatusChanged(Contact contact) {
+		public void onContactStatusChanged(Contact contact, boolean online) {
 			Conversation conversation = findActiveConversation(contact);
 			if (conversation != null) {
 				conversation.endOtrIfNeeded();
+				if (online&&(contact.getPresences().size() == 1)) {
+					sendUnsendMessages(conversation);
+				}
 			}
 		}
 	};

src/eu/siacs/conversations/xmpp/OnContactStatusChanged.java 🔗

@@ -3,5 +3,5 @@ package eu.siacs.conversations.xmpp;
 import eu.siacs.conversations.entities.Contact;
 
 public interface OnContactStatusChanged {
-	public void onContactStatusChanged(Contact contact);
+	public void onContactStatusChanged(Contact contact, boolean online);
 }