From 8eb1640a265628e47e437d0ff75ceea5b83c4a38 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Mon, 30 May 2016 21:11:34 +0200 Subject: remove unicode control chars before sending --- src/main/java/eu/siacs/conversations/utils/XmlHelper.java | 1 + 1 file changed, 1 insertion(+) (limited to 'src/main/java/eu/siacs/conversations/utils') diff --git a/src/main/java/eu/siacs/conversations/utils/XmlHelper.java b/src/main/java/eu/siacs/conversations/utils/XmlHelper.java index 4dee07cf7..198ce28b9 100644 --- a/src/main/java/eu/siacs/conversations/utils/XmlHelper.java +++ b/src/main/java/eu/siacs/conversations/utils/XmlHelper.java @@ -7,6 +7,7 @@ public class XmlHelper { content = content.replace(">", ">"); content = content.replace("\"", """); content = content.replace("'", "'"); + content = content.replaceAll("\\p{Cc}", ""); return content; } } -- cgit v1.2.3 From 9321ccc775776abeba764371a3d3102b16ff18b8 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Mon, 30 May 2016 21:12:04 +0200 Subject: handle app links for conferences --- src/main/java/eu/siacs/conversations/utils/XmppUri.java | 1 + 1 file changed, 1 insertion(+) (limited to 'src/main/java/eu/siacs/conversations/utils') diff --git a/src/main/java/eu/siacs/conversations/utils/XmppUri.java b/src/main/java/eu/siacs/conversations/utils/XmppUri.java index 7a56d38f7..15a6c9a12 100644 --- a/src/main/java/eu/siacs/conversations/utils/XmppUri.java +++ b/src/main/java/eu/siacs/conversations/utils/XmppUri.java @@ -47,6 +47,7 @@ public class XmppUri { // sample : https://conversations.im/i/foo/bar.com jid = segments.get(1) + "@" + segments.get(2); } + muc = segments.size() > 1 && "j".equalsIgnoreCase(segments.get(0)); } else if ("xmpp".equalsIgnoreCase(scheme)) { // sample: xmpp:foo@bar.com muc = "join".equalsIgnoreCase(uri.getQuery()); -- cgit v1.2.3 From ea6a008b39b0f669f66f3c8aec08b4deb3ece154 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Tue, 31 May 2016 17:20:21 +0200 Subject: execute phone contact changes in singlethreadexecutor --- .../eu/siacs/conversations/utils/PhoneHelper.java | 4 +++- .../utils/ReplacingSerialSingleThreadExecutor.java | 14 ++++++++++++++ .../utils/SerialSingleThreadExecutor.java | 19 ++++++++++++++++++- 3 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 src/main/java/eu/siacs/conversations/utils/ReplacingSerialSingleThreadExecutor.java (limited to 'src/main/java/eu/siacs/conversations/utils') diff --git a/src/main/java/eu/siacs/conversations/utils/PhoneHelper.java b/src/main/java/eu/siacs/conversations/utils/PhoneHelper.java index 6c1b4bef5..e3a24fcfa 100644 --- a/src/main/java/eu/siacs/conversations/utils/PhoneHelper.java +++ b/src/main/java/eu/siacs/conversations/utils/PhoneHelper.java @@ -13,12 +13,14 @@ import android.os.Bundle; import android.provider.ContactsContract; import android.provider.ContactsContract.Profile; +import java.util.ArrayList; import java.util.List; import java.util.concurrent.RejectedExecutionException; public class PhoneHelper { - public static void loadPhoneContacts(Context context, final List phoneContacts, final OnPhoneContactsLoadedListener listener) { + public static void loadPhoneContacts(Context context, final OnPhoneContactsLoadedListener listener) { + final List phoneContacts = new ArrayList<>(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && context.checkSelfPermission(Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) { listener.onPhoneContactsLoaded(phoneContacts); diff --git a/src/main/java/eu/siacs/conversations/utils/ReplacingSerialSingleThreadExecutor.java b/src/main/java/eu/siacs/conversations/utils/ReplacingSerialSingleThreadExecutor.java new file mode 100644 index 000000000..dc8a0a825 --- /dev/null +++ b/src/main/java/eu/siacs/conversations/utils/ReplacingSerialSingleThreadExecutor.java @@ -0,0 +1,14 @@ +package eu.siacs.conversations.utils; + +public class ReplacingSerialSingleThreadExecutor extends SerialSingleThreadExecutor { + + public ReplacingSerialSingleThreadExecutor(boolean prepareLooper) { + super(prepareLooper); + } + + @Override + public synchronized void execute(final Runnable r) { + tasks.clear(); + super.execute(r); + } +} diff --git a/src/main/java/eu/siacs/conversations/utils/SerialSingleThreadExecutor.java b/src/main/java/eu/siacs/conversations/utils/SerialSingleThreadExecutor.java index bfb4668db..55489ee30 100644 --- a/src/main/java/eu/siacs/conversations/utils/SerialSingleThreadExecutor.java +++ b/src/main/java/eu/siacs/conversations/utils/SerialSingleThreadExecutor.java @@ -1,5 +1,7 @@ package eu.siacs.conversations.utils; +import android.os.Looper; + import java.util.ArrayDeque; import java.util.Queue; import java.util.concurrent.Executor; @@ -8,9 +10,24 @@ import java.util.concurrent.Executors; public class SerialSingleThreadExecutor implements Executor { final Executor executor = Executors.newSingleThreadExecutor(); - final Queue tasks = new ArrayDeque(); + protected final Queue tasks = new ArrayDeque(); Runnable active; + public SerialSingleThreadExecutor() { + this(false); + } + + public SerialSingleThreadExecutor(boolean prepareLooper) { + if (prepareLooper) { + execute(new Runnable() { + @Override + public void run() { + Looper.prepare(); + } + }); + } + } + public synchronized void execute(final Runnable r) { tasks.offer(new Runnable() { public void run() { -- cgit v1.2.3