fixed npes

iNPUTmice created

Change summary

src/eu/siacs/conversations/entities/Conversation.java          |  3 +
src/eu/siacs/conversations/services/XmppConnectionService.java | 11 ++-
2 files changed, 9 insertions(+), 5 deletions(-)

Detailed changes

src/eu/siacs/conversations/entities/Conversation.java 🔗

@@ -139,6 +139,9 @@ public class Conversation extends AbstractEntity {
 	}
 
 	public String getLatestMarkableMessageId() {
+		if (this.messages == null) {
+			return null;
+		}
 		for(int i = this.messages.size() - 1; i >= 0; --i) {
 			if (this.messages.get(i).getStatus() <= Message.STATUS_RECEIVED && this.messages.get(i).markable) {
 				if (this.messages.get(i).isRead()) {

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

@@ -517,7 +517,8 @@ public class XmppConnectionService extends Service {
 		MessagePacket packet = null;
 		boolean saveInDb = true;
 		boolean send = false;
-		if (account.getStatus() == Account.STATUS_ONLINE) {
+		if (account.getStatus() == Account.STATUS_ONLINE
+				&& account.getXmppConnection() != null) {
 			if (message.getType() == Message.TYPE_IMAGE) {
 				if (message.getPresence() != null) {
 					if (message.getEncryption() == Message.ENCRYPTION_OTR) {
@@ -567,6 +568,10 @@ public class XmppConnectionService extends Service {
 					send = true;
 				}
 			}
+			if (!account.getXmppConnection().getFeatures().sm()
+					&& conv.getMode() != Conversation.MODE_MULTI) {
+				message.setStatus(Message.STATUS_SEND);
+			}
 		} else {
 			message.setStatus(Message.STATUS_WAITING);
 			if (message.getType() == Message.TYPE_TEXT) {
@@ -592,10 +597,6 @@ public class XmppConnectionService extends Service {
 
 		}
 		conv.getMessages().add(message);
-		if (!account.getXmppConnection().getFeatures().sm()
-				&& conv.getMode() != Conversation.MODE_MULTI) {
-			message.setStatus(Message.STATUS_SEND);
-		}
 		if (saveInDb) {
 			if (message.getEncryption() == Message.ENCRYPTION_NONE
 					|| saveEncryptedMessages()) {