aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/eu/siacs/conversations/entities
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/eu/siacs/conversations/entities')
-rw-r--r--src/main/java/eu/siacs/conversations/entities/Account.java16
-rw-r--r--src/main/java/eu/siacs/conversations/entities/Bookmark.java14
-rw-r--r--src/main/java/eu/siacs/conversations/entities/Contact.java12
-rw-r--r--src/main/java/eu/siacs/conversations/entities/Conversation.java10
-rw-r--r--src/main/java/eu/siacs/conversations/entities/Message.java4
-rw-r--r--src/main/java/eu/siacs/conversations/entities/Roster.java14
6 files changed, 39 insertions, 31 deletions
diff --git a/src/main/java/eu/siacs/conversations/entities/Account.java b/src/main/java/eu/siacs/conversations/entities/Account.java
index fe103094..6e6dcb6a 100644
--- a/src/main/java/eu/siacs/conversations/entities/Account.java
+++ b/src/main/java/eu/siacs/conversations/entities/Account.java
@@ -19,7 +19,7 @@ import java.util.concurrent.CopyOnWriteArraySet;
import eu.siacs.conversations.Config;
import eu.siacs.conversations.R;
-import eu.siacs.conversations.crypto.OtrEngine;
+import eu.siacs.conversations.crypto.OtrService;
import eu.siacs.conversations.services.XmppConnectionService;
import eu.siacs.conversations.xmpp.XmppConnection;
import eu.siacs.conversations.xmpp.jid.InvalidJidException;
@@ -117,7 +117,7 @@ public class Account extends AbstractEntity {
protected JSONObject keys = new JSONObject();
protected String avatar;
protected boolean online = false;
- private OtrEngine otrEngine = null;
+ private OtrService mOtrService = null;
private XmppConnection xmppConnection = null;
private long mEndGracePeriod = 0L;
private String otrFingerprint;
@@ -273,12 +273,12 @@ public class Account extends AbstractEntity {
return values;
}
- public void initOtrEngine(final XmppConnectionService context) {
- this.otrEngine = new OtrEngine(context, this);
+ public void initAccountServices(final XmppConnectionService context) {
+ this.mOtrService = new OtrService(context, this);
}
- public OtrEngine getOtrEngine() {
- return this.otrEngine;
+ public OtrService getOtrService() {
+ return this.mOtrService;
}
public XmppConnection getXmppConnection() {
@@ -292,10 +292,10 @@ public class Account extends AbstractEntity {
public String getOtrFingerprint() {
if (this.otrFingerprint == null) {
try {
- if (this.otrEngine == null) {
+ if (this.mOtrService == null) {
return null;
}
- final PublicKey publicKey = this.otrEngine.getPublicKey();
+ final PublicKey publicKey = this.mOtrService.getPublicKey();
if (publicKey == null || !(publicKey instanceof DSAPublicKey)) {
return null;
}
diff --git a/src/main/java/eu/siacs/conversations/entities/Bookmark.java b/src/main/java/eu/siacs/conversations/entities/Bookmark.java
index f81f1a87..cc6f146b 100644
--- a/src/main/java/eu/siacs/conversations/entities/Bookmark.java
+++ b/src/main/java/eu/siacs/conversations/entities/Bookmark.java
@@ -75,12 +75,7 @@ public class Bookmark extends Element implements ListItem {
}
public String getNick() {
- Element nick = this.findChild("nick");
- if (nick != null) {
- return nick.getContent();
- } else {
- return null;
- }
+ return this.findChildContent("nick");
}
public void setNick(String nick) {
@@ -96,12 +91,7 @@ public class Bookmark extends Element implements ListItem {
}
public String getPassword() {
- Element password = this.findChild("password");
- if (password != null) {
- return password.getContent();
- } else {
- return null;
- }
+ return this.findChildContent("password");
}
public void setPassword(String password) {
diff --git a/src/main/java/eu/siacs/conversations/entities/Contact.java b/src/main/java/eu/siacs/conversations/entities/Contact.java
index 9dbca59a..e546f214 100644
--- a/src/main/java/eu/siacs/conversations/entities/Contact.java
+++ b/src/main/java/eu/siacs/conversations/entities/Contact.java
@@ -237,8 +237,16 @@ public class Contact implements ListItem, Blockable {
return this.presences.getMostAvailableStatus();
}
- public void setPhotoUri(String uri) {
- this.photoUri = uri;
+ public boolean setPhotoUri(String uri) {
+ if (uri != null && !uri.equals(this.photoUri)) {
+ this.photoUri = uri;
+ return true;
+ } else if (this.photoUri != null && uri == null) {
+ this.photoUri = null;
+ return true;
+ } else {
+ return false;
+ }
}
public void setServerName(String serverName) {
diff --git a/src/main/java/eu/siacs/conversations/entities/Conversation.java b/src/main/java/eu/siacs/conversations/entities/Conversation.java
index 95a8c957..289ed4ea 100644
--- a/src/main/java/eu/siacs/conversations/entities/Conversation.java
+++ b/src/main/java/eu/siacs/conversations/entities/Conversation.java
@@ -249,6 +249,12 @@ public class Conversation extends AbstractEntity implements Blockable {
this.mLastReceivedOtrMessageId = id;
}
+ public int countMessages() {
+ synchronized (this.messages) {
+ return this.messages.size();
+ }
+ }
+
public interface OnMessageFound {
public void onMessageFound(final Message message);
@@ -419,7 +425,7 @@ public class Conversation extends AbstractEntity implements Blockable {
final SessionID sessionId = new SessionID(this.getJid().toBareJid().toString(),
presence,
"xmpp");
- this.otrSession = new SessionImpl(sessionId, getAccount().getOtrEngine());
+ this.otrSession = new SessionImpl(sessionId, getAccount().getOtrService());
try {
if (sendStart) {
this.otrSession.startSession();
@@ -491,7 +497,7 @@ public class Conversation extends AbstractEntity implements Blockable {
return null;
}
DSAPublicKey remotePubKey = (DSAPublicKey) getOtrSession().getRemotePublicKey();
- this.otrFingerprint = getAccount().getOtrEngine().getFingerprint(remotePubKey);
+ this.otrFingerprint = getAccount().getOtrService().getFingerprint(remotePubKey);
} catch (final OtrCryptoException | UnsupportedOperationException ignored) {
return null;
}
diff --git a/src/main/java/eu/siacs/conversations/entities/Message.java b/src/main/java/eu/siacs/conversations/entities/Message.java
index 38152edb..a63d033d 100644
--- a/src/main/java/eu/siacs/conversations/entities/Message.java
+++ b/src/main/java/eu/siacs/conversations/entities/Message.java
@@ -17,7 +17,7 @@ public class Message extends AbstractEntity {
public static final String TABLENAME = "messages";
- public static final String MERGE_SEPARATOR = "\u200B\n\n";
+ public static final String MERGE_SEPARATOR = " \u200B\n\n";
public static final int STATUS_RECEIVED = 0;
public static final int STATUS_UNSEND = 1;
@@ -328,7 +328,7 @@ public class Message extends AbstractEntity {
return this.remoteMsgId == null
&& this.counterpart.equals(message.getCounterpart())
&& this.body.equals(message.getBody())
- && Math.abs(this.getTimeSent() - message.getTimeSent()) < Config.PING_TIMEOUT * 500;
+ && Math.abs(this.getTimeSent() - message.getTimeSent()) < Config.MESSAGE_MERGE_WINDOW * 1000;
}
}
diff --git a/src/main/java/eu/siacs/conversations/entities/Roster.java b/src/main/java/eu/siacs/conversations/entities/Roster.java
index ce058004..d6777ef6 100644
--- a/src/main/java/eu/siacs/conversations/entities/Roster.java
+++ b/src/main/java/eu/siacs/conversations/entities/Roster.java
@@ -2,6 +2,7 @@ package eu.siacs.conversations.entities;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.List;
import eu.siacs.conversations.xmpp.jid.Jid;
@@ -55,12 +56,15 @@ public class Roster {
}
}
- public void clearSystemAccounts() {
- for (Contact contact : getContacts()) {
- contact.setPhotoUri(null);
- contact.setSystemName(null);
- contact.setSystemAccount(null);
+ public List<Contact> getWithSystemAccounts() {
+ List<Contact> with = getContacts();
+ for(Iterator<Contact> iterator = with.iterator(); iterator.hasNext();) {
+ Contact contact = iterator.next();
+ if (contact.getSystemAccount() == null) {
+ iterator.remove();
+ }
}
+ return with;
}
public List<Contact> getContacts() {