fixes for offline otr

This commit is contained in:
iNPUTmice 2014-06-24 15:07:59 +02:00
parent 2a8f9642d5
commit 6ef9421d35
2 changed files with 17 additions and 1 deletions

View file

@ -64,6 +64,8 @@ public class Conversation extends AbstractEntity {
private byte[] symmetricKey;
private boolean otrSessionNeedsStarting = false;
public Conversation(String name, Account account, String contactJid,
int mode) {
this(java.util.UUID.randomUUID().toString(), name, null, account
@ -237,7 +239,10 @@ public class Conversation extends AbstractEntity {
try {
if (sendStart) {
this.otrSession.startSession();
this.otrSessionNeedsStarting = false;
return this.otrSession;
} else {
this.otrSessionNeedsStarting = true;
}
return this.otrSession;
} catch (OtrException e) {
@ -252,9 +257,20 @@ public class Conversation extends AbstractEntity {
}
public void resetOtrSession() {
this.otrSessionNeedsStarting = false;
this.otrSession = null;
}
public void startOtrIfNeeded() {
if (this.otrSession != null && this.otrSessionNeedsStarting) {
try {
this.otrSession.startSession();
} catch (OtrException e) {
this.resetOtrSession();
}
}
}
public void endOtrIfNeeded() {
if (this.otrSession != null) {
if (this.otrSession.getSessionStatus() == SessionStatus.ENCRYPTED) {

View file

@ -235,7 +235,7 @@ public class XmppConnectionService extends Service {
List<Conversation> conversations = getConversations();
for (int i = 0; i < conversations.size(); ++i) {
if (conversations.get(i).getAccount() == account) {
conversations.get(i).endOtrIfNeeded();
conversations.get(i).startOtrIfNeeded();
sendUnsendMessages(conversations.get(i));
}
}