From d651716d99434af57404d3a8505e5d08eab301b7 Mon Sep 17 00:00:00 2001 From: Alan Evans Date: Tue, 23 Feb 2021 12:48:20 -0400 Subject: [PATCH] Remove two AsyncTasks. --- .../securesms/VerifyIdentityActivity.java | 55 +++++++++---------- .../securesms/util/IdentityUtil.java | 28 ++++------ 2 files changed, 39 insertions(+), 44 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/VerifyIdentityActivity.java b/app/src/main/java/org/thoughtcrime/securesms/VerifyIdentityActivity.java index 02404f7d9..e24c98100 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/VerifyIdentityActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/VerifyIdentityActivity.java @@ -60,6 +60,7 @@ import androidx.appcompat.widget.SwitchCompat; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentTransaction; +import org.signal.core.util.concurrent.SignalExecutors; import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.color.MaterialColor; import org.thoughtcrime.securesms.components.camera.CameraView; @@ -79,7 +80,6 @@ import org.thoughtcrime.securesms.recipients.LiveRecipient; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientId; import org.thoughtcrime.securesms.storage.StorageSyncHelper; -import org.thoughtcrime.securesms.util.DynamicDarkActionBarTheme; import org.thoughtcrime.securesms.util.DynamicTheme; import org.thoughtcrime.securesms.util.FeatureFlags; import org.thoughtcrime.securesms.util.IdentityUtil; @@ -617,36 +617,35 @@ public class VerifyIdentityActivity extends PassphraseRequiredActivity implement @Override public void onCheckedChanged(CompoundButton buttonView, final boolean isChecked) { - new AsyncTask() { - @Override - protected Void doInBackground(Recipient... params) { - try (SignalSessionLock.Lock unused = DatabaseSessionLock.INSTANCE.acquire()) { - if (isChecked) { - Log.i(TAG, "Saving identity: " + params[0].getId()); - DatabaseFactory.getIdentityDatabase(getActivity()) - .saveIdentity(params[0].getId(), - remoteIdentity, - VerifiedStatus.VERIFIED, false, - System.currentTimeMillis(), true); - } else { - DatabaseFactory.getIdentityDatabase(getActivity()) - .setVerified(params[0].getId(), - remoteIdentity, - VerifiedStatus.DEFAULT); - } + final Recipient recipient = this.recipient.get(); + final RecipientId recipientId = recipient.getId(); - ApplicationDependencies.getJobManager() - .add(new MultiDeviceVerifiedUpdateJob(recipient.getId(), - remoteIdentity, - isChecked ? VerifiedStatus.VERIFIED : - VerifiedStatus.DEFAULT)); - StorageSyncHelper.scheduleSyncForDataChange(); - - IdentityUtil.markIdentityVerified(getActivity(), recipient.get(), isChecked, false); + SignalExecutors.BOUNDED.execute(() -> { + try (SignalSessionLock.Lock unused = DatabaseSessionLock.INSTANCE.acquire()) { + if (isChecked) { + Log.i(TAG, "Saving identity: " + recipientId); + DatabaseFactory.getIdentityDatabase(getActivity()) + .saveIdentity(recipientId, + remoteIdentity, + VerifiedStatus.VERIFIED, false, + System.currentTimeMillis(), true); + } else { + DatabaseFactory.getIdentityDatabase(getActivity()) + .setVerified(recipientId, + remoteIdentity, + VerifiedStatus.DEFAULT); } - return null; + + ApplicationDependencies.getJobManager() + .add(new MultiDeviceVerifiedUpdateJob(recipientId, + remoteIdentity, + isChecked ? VerifiedStatus.VERIFIED + : VerifiedStatus.DEFAULT)); + StorageSyncHelper.scheduleSyncForDataChange(); + + IdentityUtil.markIdentityVerified(getActivity(), recipient, isChecked, false); } - }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, recipient.get()); + }); } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/IdentityUtil.java b/app/src/main/java/org/thoughtcrime/securesms/util/IdentityUtil.java index 9c0d1c597..f7be227b7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/IdentityUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/IdentityUtil.java @@ -1,12 +1,12 @@ package org.thoughtcrime.securesms.util; import android.content.Context; -import android.os.AsyncTask; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.StringRes; +import org.signal.core.util.concurrent.SignalExecutors; import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.crypto.DatabaseSessionLock; @@ -30,6 +30,7 @@ import org.thoughtcrime.securesms.sms.OutgoingIdentityVerifiedMessage; import org.thoughtcrime.securesms.sms.OutgoingTextMessage; import org.thoughtcrime.securesms.util.concurrent.ListenableFuture; import org.thoughtcrime.securesms.util.concurrent.SettableFuture; +import org.thoughtcrime.securesms.util.concurrent.SimpleTask; import org.whispersystems.libsignal.IdentityKey; import org.whispersystems.libsignal.SignalProtocolAddress; import org.whispersystems.libsignal.state.IdentityKeyStore; @@ -41,25 +42,20 @@ import org.whispersystems.signalservice.api.messages.multidevice.VerifiedMessage import java.util.List; -public class IdentityUtil { +public final class IdentityUtil { - private static final String TAG = IdentityUtil.class.getSimpleName(); + private IdentityUtil() {} + + private static final String TAG = Log.tag(IdentityUtil.class); public static ListenableFuture> getRemoteIdentityKey(final Context context, final Recipient recipient) { - final SettableFuture> future = new SettableFuture<>(); + final SettableFuture> future = new SettableFuture<>(); + final RecipientId recipientId = recipient.getId(); - new AsyncTask>() { - @Override - protected Optional doInBackground(Recipient... recipient) { - return DatabaseFactory.getIdentityDatabase(context) - .getIdentity(recipient[0].getId()); - } - - @Override - protected void onPostExecute(Optional result) { - future.set(result); - } - }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, recipient); + SimpleTask.run(SignalExecutors.BOUNDED, + () -> DatabaseFactory.getIdentityDatabase(context) + .getIdentity(recipientId), + future::set); return future; }