diff --git a/app/src/main/java/org/thoughtcrime/securesms/notifications/MarkReadReceiver.java b/app/src/main/java/org/thoughtcrime/securesms/notifications/MarkReadReceiver.java index 8ab1bef988..b5bfc9130e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/notifications/MarkReadReceiver.java +++ b/app/src/main/java/org/thoughtcrime/securesms/notifications/MarkReadReceiver.java @@ -4,13 +4,13 @@ import android.annotation.SuppressLint; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; -import android.os.AsyncTask; import androidx.annotation.NonNull; import com.annimon.stream.Collectors; import com.annimon.stream.Stream; +import org.signal.core.util.concurrent.SignalExecutors; import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.ApplicationContext; import org.thoughtcrime.securesms.database.DatabaseFactory; @@ -45,24 +45,19 @@ public class MarkReadReceiver extends BroadcastReceiver { if (threadIds != null) { NotificationCancellationHelper.cancelLegacy(context, intent.getIntExtra(NOTIFICATION_ID_EXTRA, -1)); - new AsyncTask() { - @Override - protected Void doInBackground(Void... params) { - List messageIdsCollection = new LinkedList<>(); + SignalExecutors.BOUNDED.execute(() -> { + List messageIdsCollection = new LinkedList<>(); - for (long threadId : threadIds) { - Log.i(TAG, "Marking as read: " + threadId); - List messageIds = DatabaseFactory.getThreadDatabase(context).setRead(threadId, true); - messageIdsCollection.addAll(messageIds); - } - - process(context, messageIdsCollection); - - ApplicationDependencies.getMessageNotifier().updateNotification(context); - - return null; + for (long threadId : threadIds) { + Log.i(TAG, "Marking as read: " + threadId); + List messageIds = DatabaseFactory.getThreadDatabase(context).setRead(threadId, true); + messageIdsCollection.addAll(messageIds); } - }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); + + process(context, messageIdsCollection); + + ApplicationDependencies.getMessageNotifier().updateNotification(context); + }); } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/notifications/RemoteReplyReceiver.java b/app/src/main/java/org/thoughtcrime/securesms/notifications/RemoteReplyReceiver.java index 4d311e71c4..36dc9daa62 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/notifications/RemoteReplyReceiver.java +++ b/app/src/main/java/org/thoughtcrime/securesms/notifications/RemoteReplyReceiver.java @@ -26,6 +26,7 @@ import android.os.Bundle; import androidx.core.app.RemoteInput; +import org.signal.core.util.concurrent.SignalExecutors; import org.thoughtcrime.securesms.database.DatabaseFactory; import org.thoughtcrime.securesms.database.MessageDatabase.MarkedMessageInfo; import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; @@ -67,56 +68,51 @@ public class RemoteReplyReceiver extends BroadcastReceiver { if (replyMethod == null) throw new AssertionError("No reply method specified"); if (responseText != null) { - new AsyncTask() { - @Override - protected Void doInBackground(Void... params) { - long threadId; + SignalExecutors.BOUNDED.execute(() -> { + long threadId; - Recipient recipient = Recipient.resolved(recipientId); - int subscriptionId = recipient.getDefaultSubscriptionId().or(-1); - long expiresIn = recipient.getExpireMessages() * 1000L; + Recipient recipient = Recipient.resolved(recipientId); + int subscriptionId = recipient.getDefaultSubscriptionId().or(-1); + long expiresIn = recipient.getExpireMessages() * 1000L; - switch (replyMethod) { - case GroupMessage: { - OutgoingMediaMessage reply = new OutgoingMediaMessage(recipient, - responseText.toString(), - new LinkedList<>(), - System.currentTimeMillis(), - subscriptionId, - expiresIn, - false, - 0, - null, - Collections.emptyList(), - Collections.emptyList(), - Collections.emptyList(), - Collections.emptyList(), - Collections.emptyList()); - threadId = MessageSender.send(context, reply, -1, false, null); - break; - } - case SecureMessage: { - OutgoingEncryptedMessage reply = new OutgoingEncryptedMessage(recipient, responseText.toString(), expiresIn); - threadId = MessageSender.send(context, reply, -1, false, null); - break; - } - case UnsecuredSmsMessage: { - OutgoingTextMessage reply = new OutgoingTextMessage(recipient, responseText.toString(), expiresIn, subscriptionId); - threadId = MessageSender.send(context, reply, -1, true, null); - break; - } - default: - throw new AssertionError("Unknown Reply method"); + switch (replyMethod) { + case GroupMessage: { + OutgoingMediaMessage reply = new OutgoingMediaMessage(recipient, + responseText.toString(), + new LinkedList<>(), + System.currentTimeMillis(), + subscriptionId, + expiresIn, + false, + 0, + null, + Collections.emptyList(), + Collections.emptyList(), + Collections.emptyList(), + Collections.emptyList(), + Collections.emptyList()); + threadId = MessageSender.send(context, reply, -1, false, null); + break; } - - List messageIds = DatabaseFactory.getThreadDatabase(context).setRead(threadId, true); - - ApplicationDependencies.getMessageNotifier().updateNotification(context); - MarkReadReceiver.process(context, messageIds); - - return null; + case SecureMessage: { + OutgoingEncryptedMessage reply = new OutgoingEncryptedMessage(recipient, responseText.toString(), expiresIn); + threadId = MessageSender.send(context, reply, -1, false, null); + break; + } + case UnsecuredSmsMessage: { + OutgoingTextMessage reply = new OutgoingTextMessage(recipient, responseText.toString(), expiresIn, subscriptionId); + threadId = MessageSender.send(context, reply, -1, true, null); + break; + } + default: + throw new AssertionError("Unknown Reply method"); } - }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); + + List messageIds = DatabaseFactory.getThreadDatabase(context).setRead(threadId, true); + + ApplicationDependencies.getMessageNotifier().updateNotification(context); + MarkReadReceiver.process(context, messageIds); + }); } } }