Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/iNPUTmice/Conversations.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Gultsch <daniel@gultsch.de>2022-09-14 13:49:15 +0300
committerDaniel Gultsch <daniel@gultsch.de>2022-09-14 13:49:18 +0300
commitc1abca35da2fd8887fe0dd85935a63a930accba0 (patch)
tree0b997fd5298fb05fd0e484ac47601c102753de54
parentd0efe6eae2fb79d0f96373ffc51b7a40c2f3ff80 (diff)
copy bookmarks before passing them to other parts of the app for read
closes #4381
-rw-r--r--src/main/java/eu/siacs/conversations/Config.java2
-rw-r--r--src/main/java/eu/siacs/conversations/entities/Account.java9
-rw-r--r--src/main/java/eu/siacs/conversations/services/XmppConnectionService.java8
-rw-r--r--src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java4
4 files changed, 13 insertions, 10 deletions
diff --git a/src/main/java/eu/siacs/conversations/Config.java b/src/main/java/eu/siacs/conversations/Config.java
index f7c3dd151..a3eacc9db 100644
--- a/src/main/java/eu/siacs/conversations/Config.java
+++ b/src/main/java/eu/siacs/conversations/Config.java
@@ -57,7 +57,7 @@ public final class Config {
public static final long CONTACT_SYNC_RETRY_INTERVAL = 1000L * 60 * 5;
- public static final boolean SASL_2_ENABLED = false;
+ public static final boolean SASL_2_ENABLED = true;
//Notification settings
public static final boolean HIDE_MESSAGE_TEXT_IN_NOTIFICATION = false;
diff --git a/src/main/java/eu/siacs/conversations/entities/Account.java b/src/main/java/eu/siacs/conversations/entities/Account.java
index 9220cc192..10f6ed8a8 100644
--- a/src/main/java/eu/siacs/conversations/entities/Account.java
+++ b/src/main/java/eu/siacs/conversations/entities/Account.java
@@ -6,6 +6,7 @@ import android.os.SystemClock;
import android.util.Log;
import com.google.common.base.Strings;
+import com.google.common.collect.ImmutableList;
import org.json.JSONException;
import org.json.JSONObject;
@@ -488,17 +489,19 @@ public class Account extends AbstractEntity implements AvatarService.Avatarable
}
public Collection<Bookmark> getBookmarks() {
- return this.bookmarks.values();
+ synchronized (this.bookmarks) {
+ return ImmutableList.copyOf(this.bookmarks.values());
+ }
}
- public void setBookmarks(Map<Jid, Bookmark> bookmarks) {
+ public void setBookmarks(final Map<Jid, Bookmark> bookmarks) {
synchronized (this.bookmarks) {
this.bookmarks.clear();
this.bookmarks.putAll(bookmarks);
}
}
- public void putBookmark(Bookmark bookmark) {
+ public void putBookmark(final Bookmark bookmark) {
synchronized (this.bookmarks) {
this.bookmarks.put(bookmark.getJid(), bookmark);
}
diff --git a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java
index 586b717ff..e4af37947 100644
--- a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java
+++ b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java
@@ -1862,7 +1862,7 @@ public class XmppConnectionService extends Service {
IqPacket iqPacket = new IqPacket(IqPacket.TYPE.SET);
Element query = iqPacket.query("jabber:iq:private");
Element storage = query.addChild("storage", "storage:bookmarks");
- for (Bookmark bookmark : account.getBookmarks()) {
+ for (final Bookmark bookmark : account.getBookmarks()) {
storage.addChild(bookmark);
}
sendIqPacket(account, iqPacket, mDefaultIqHandler);
@@ -1870,8 +1870,8 @@ public class XmppConnectionService extends Service {
private void pushBookmarksPep(Account account) {
Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": pushing bookmarks via pep");
- Element storage = new Element("storage", "storage:bookmarks");
- for (Bookmark bookmark : account.getBookmarks()) {
+ final Element storage = new Element("storage", "storage:bookmarks");
+ for (final Bookmark bookmark : account.getBookmarks()) {
storage.addChild(bookmark);
}
pushNodeAndEnforcePublishOptions(account, Namespace.BOOKMARKS, storage, "current", PublishOptions.persistentWhitelistAccess());
@@ -4418,7 +4418,7 @@ public class XmppConnectionService extends Service {
for (final Account account : accounts) {
if (account.getXmppConnection() != null) {
mucServers.addAll(account.getXmppConnection().getMucServers());
- for (Bookmark bookmark : account.getBookmarks()) {
+ for (final Bookmark bookmark : account.getBookmarks()) {
final Jid jid = bookmark.getJid();
final String s = jid == null ? null : jid.getDomain().toEscapedString();
if (s != null) {
diff --git a/src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java b/src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java
index 994797779..91807295b 100644
--- a/src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java
+++ b/src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java
@@ -980,9 +980,9 @@ public class StartConversationActivity extends XmppActivity implements XmppConne
protected void filterConferences(String needle) {
this.conferences.clear();
- for (Account account : xmppConnectionService.getAccounts()) {
+ for (final Account account : xmppConnectionService.getAccounts()) {
if (account.getStatus() != Account.State.DISABLED) {
- for (Bookmark bookmark : account.getBookmarks()) {
+ for (final Bookmark bookmark : account.getBookmarks()) {
if (bookmark.match(this, needle)) {
this.conferences.add(bookmark);
}