From 3f555ce5e2d6d8d1cd305a84eed03e89895be4d4 Mon Sep 17 00:00:00 2001 From: Alan Evans Date: Tue, 21 Apr 2020 09:47:59 -0300 Subject: [PATCH] Extract method for creating safety number intents. --- .../RecipientPreferenceActivity.java | 10 +-- .../securesms/VerifyIdentityActivity.java | 70 +++++++++++++------ .../conversation/ConversationActivity.java | 16 +---- .../conversation/ConversationUpdateItem.java | 19 ++--- .../securesms/util/VerifySpan.java | 11 +-- 5 files changed, 61 insertions(+), 65 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/RecipientPreferenceActivity.java b/app/src/main/java/org/thoughtcrime/securesms/RecipientPreferenceActivity.java index 35ae4cd578..c1285dc576 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/RecipientPreferenceActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/RecipientPreferenceActivity.java @@ -46,9 +46,7 @@ import org.thoughtcrime.securesms.contacts.avatars.ContactPhoto; import org.thoughtcrime.securesms.contacts.avatars.FallbackContactPhoto; import org.thoughtcrime.securesms.contacts.avatars.ProfileContactPhoto; import org.thoughtcrime.securesms.contacts.avatars.ResourceContactPhoto; -import org.thoughtcrime.securesms.crypto.IdentityKeyParcelable; import org.thoughtcrime.securesms.database.DatabaseFactory; -import org.thoughtcrime.securesms.database.IdentityDatabase; import org.thoughtcrime.securesms.database.IdentityDatabase.IdentityRecord; import org.thoughtcrime.securesms.database.MediaDatabase; import org.thoughtcrime.securesms.database.RecipientDatabase; @@ -75,10 +73,8 @@ import org.thoughtcrime.securesms.util.DynamicLanguage; import org.thoughtcrime.securesms.util.DynamicTheme; import org.thoughtcrime.securesms.util.FeatureFlags; import org.thoughtcrime.securesms.util.IdentityUtil; -import org.thoughtcrime.securesms.util.ServiceUtil; import org.thoughtcrime.securesms.util.TextSecurePreferences; import org.thoughtcrime.securesms.util.ThemeUtil; -import org.thoughtcrime.securesms.util.Util; import org.thoughtcrime.securesms.util.ViewUtil; import org.thoughtcrime.securesms.util.concurrent.ListenableFuture; import org.thoughtcrime.securesms.util.concurrent.SimpleTask; @@ -675,11 +671,7 @@ public class RecipientPreferenceActivity extends PassphraseRequiredActionBarActi @Override public boolean onPreferenceClick(Preference preference) { - Intent verifyIdentityIntent = new Intent(preference.getContext(), VerifyIdentityActivity.class); - verifyIdentityIntent.putExtra(VerifyIdentityActivity.RECIPIENT_EXTRA, recipient.getId()); - verifyIdentityIntent.putExtra(VerifyIdentityActivity.IDENTITY_EXTRA, new IdentityKeyParcelable(identityKey.getIdentityKey())); - verifyIdentityIntent.putExtra(VerifyIdentityActivity.VERIFIED_EXTRA, identityKey.getVerifiedStatus() == IdentityDatabase.VerifiedStatus.VERIFIED); - startActivity(verifyIdentityIntent); + startActivity(VerifyIdentityActivity.newIntent(preference.getContext(), identityKey)); return true; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/VerifyIdentityActivity.java b/app/src/main/java/org/thoughtcrime/securesms/VerifyIdentityActivity.java index ec304aaaa4..4ffa7598a1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/VerifyIdentityActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/VerifyIdentityActivity.java @@ -34,18 +34,9 @@ import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; import android.os.Vibrator; -import androidx.annotation.DrawableRes; -import androidx.annotation.NonNull; -import androidx.fragment.app.Fragment; -import androidx.fragment.app.FragmentTransaction; -import androidx.appcompat.widget.SwitchCompat; import android.text.Html; import android.text.TextUtils; import android.text.method.LinkMovementMethod; - -import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; -import org.thoughtcrime.securesms.jobs.StorageSyncJob; -import org.thoughtcrime.securesms.logging.Log; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.LayoutInflater; @@ -63,13 +54,22 @@ import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; +import androidx.annotation.DrawableRes; +import androidx.annotation.NonNull; +import androidx.appcompat.widget.SwitchCompat; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentTransaction; + import org.thoughtcrime.securesms.color.MaterialColor; import org.thoughtcrime.securesms.components.camera.CameraView; import org.thoughtcrime.securesms.crypto.IdentityKeyParcelable; import org.thoughtcrime.securesms.crypto.IdentityKeyUtil; import org.thoughtcrime.securesms.database.DatabaseFactory; +import org.thoughtcrime.securesms.database.IdentityDatabase; import org.thoughtcrime.securesms.database.IdentityDatabase.VerifiedStatus; +import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobs.MultiDeviceVerifiedUpdateJob; +import org.thoughtcrime.securesms.logging.Log; import org.thoughtcrime.securesms.permissions.Permissions; import org.thoughtcrime.securesms.qr.QrCode; import org.thoughtcrime.securesms.qr.ScanListener; @@ -79,7 +79,6 @@ 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.DynamicLanguage; import org.thoughtcrime.securesms.util.DynamicTheme; import org.thoughtcrime.securesms.util.FeatureFlags; import org.thoughtcrime.securesms.util.IdentityUtil; @@ -107,22 +106,53 @@ import static org.whispersystems.libsignal.SessionCipher.SESSION_LOCK; @SuppressLint("StaticFieldLeak") public class VerifyIdentityActivity extends PassphraseRequiredActionBarActivity implements ScanListener, View.OnClickListener { - private static final String TAG = VerifyIdentityActivity.class.getSimpleName(); + private static final String TAG = Log.tag(VerifyIdentityActivity.class); - public static final String RECIPIENT_EXTRA = "recipient_id"; - public static final String IDENTITY_EXTRA = "recipient_identity"; - public static final String VERIFIED_EXTRA = "verified_state"; + private static final String RECIPIENT_EXTRA = "recipient_id"; + private static final String IDENTITY_EXTRA = "recipient_identity"; + private static final String VERIFIED_EXTRA = "verified_state"; - private final DynamicTheme dynamicTheme = new DynamicDarkActionBarTheme(); - private final DynamicLanguage dynamicLanguage = new DynamicLanguage(); + private final DynamicTheme dynamicTheme = new DynamicDarkActionBarTheme(); - private VerifyDisplayFragment displayFragment = new VerifyDisplayFragment(); - private VerifyScanFragment scanFragment = new VerifyScanFragment(); + private final VerifyDisplayFragment displayFragment = new VerifyDisplayFragment(); + private final VerifyScanFragment scanFragment = new VerifyScanFragment(); + + public static Intent newIntent(@NonNull Context context, + @NonNull IdentityDatabase.IdentityRecord identityRecord) + { + return newIntent(context, + identityRecord.getRecipientId(), + identityRecord.getIdentityKey(), + identityRecord.getVerifiedStatus() == IdentityDatabase.VerifiedStatus.VERIFIED); + } + + public static Intent newIntent(@NonNull Context context, + @NonNull IdentityDatabase.IdentityRecord identityRecord, + boolean verified) + { + return newIntent(context, + identityRecord.getRecipientId(), + identityRecord.getIdentityKey(), + verified); + } + + public static Intent newIntent(@NonNull Context context, + @NonNull RecipientId recipientId, + @NonNull IdentityKey identityKey, + boolean verified) + { + Intent intent = new Intent(context, VerifyIdentityActivity.class); + + intent.putExtra(RECIPIENT_EXTRA, recipientId); + intent.putExtra(IDENTITY_EXTRA, new IdentityKeyParcelable(identityKey)); + intent.putExtra(VERIFIED_EXTRA, verified); + + return intent; + } @Override public void onPreCreate() { dynamicTheme.onCreate(this); - dynamicLanguage.onCreate(this); } @Override @@ -145,7 +175,7 @@ public class VerifyIdentityActivity extends PassphraseRequiredActionBarActivity scanFragment.setScanListener(this); displayFragment.setClickListener(this); - initFragment(android.R.id.content, displayFragment, dynamicLanguage.getCurrentLocale(), extras); + initFragment(android.R.id.content, displayFragment, Locale.getDefault(), extras); } @Override diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationActivity.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationActivity.java index e59dc05408..d7d488278d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationActivity.java @@ -24,7 +24,6 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; -import android.content.pm.PackageManager; import android.content.res.Configuration; import android.content.res.TypedArray; import android.graphics.Bitmap; @@ -127,7 +126,6 @@ import org.thoughtcrime.securesms.contactshare.ContactShareEditActivity; import org.thoughtcrime.securesms.contactshare.ContactUtil; import org.thoughtcrime.securesms.contactshare.SimpleTextWatcher; import org.thoughtcrime.securesms.conversationlist.model.MessageResult; -import org.thoughtcrime.securesms.crypto.IdentityKeyParcelable; import org.thoughtcrime.securesms.crypto.SecurityEvent; import org.thoughtcrime.securesms.database.DatabaseFactory; import org.thoughtcrime.securesms.database.DraftDatabase; @@ -3018,12 +3016,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity public void onClicked(final List unverifiedIdentities) { Log.i(TAG, "onClicked: " + unverifiedIdentities.size()); if (unverifiedIdentities.size() == 1) { - Intent intent = new Intent(ConversationActivity.this, VerifyIdentityActivity.class); - intent.putExtra(VerifyIdentityActivity.RECIPIENT_EXTRA, unverifiedIdentities.get(0).getRecipientId()); - intent.putExtra(VerifyIdentityActivity.IDENTITY_EXTRA, new IdentityKeyParcelable(unverifiedIdentities.get(0).getIdentityKey())); - intent.putExtra(VerifyIdentityActivity.VERIFIED_EXTRA, false); - - startActivity(intent); + startActivity(VerifyIdentityActivity.newIntent(ConversationActivity.this, unverifiedIdentities.get(0), false)); } else { String[] unverifiedNames = new String[unverifiedIdentities.size()]; @@ -3035,12 +3028,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity builder.setIconAttribute(R.attr.dialog_alert_icon); builder.setTitle("No longer verified"); builder.setItems(unverifiedNames, (dialog, which) -> { - Intent intent = new Intent(ConversationActivity.this, VerifyIdentityActivity.class); - intent.putExtra(VerifyIdentityActivity.RECIPIENT_EXTRA, unverifiedIdentities.get(which).getRecipientId()); - intent.putExtra(VerifyIdentityActivity.IDENTITY_EXTRA, new IdentityKeyParcelable(unverifiedIdentities.get(which).getIdentityKey())); - intent.putExtra(VerifyIdentityActivity.VERIFIED_EXTRA, false); - - startActivity(intent); + startActivity(VerifyIdentityActivity.newIntent(ConversationActivity.this, unverifiedIdentities.get(which), false)); }); builder.show(); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationUpdateItem.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationUpdateItem.java index 3115cd9160..6ae641c6b7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationUpdateItem.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationUpdateItem.java @@ -1,26 +1,22 @@ package org.thoughtcrime.securesms.conversation; import android.content.Context; -import android.content.Intent; import android.graphics.ColorFilter; import android.graphics.PorterDuff; import android.graphics.PorterDuffColorFilter; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; - import android.util.AttributeSet; import android.view.View; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.core.content.ContextCompat; + import org.thoughtcrime.securesms.BindableConversationItem; import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.VerifyIdentityActivity; -import org.thoughtcrime.securesms.crypto.IdentityKeyParcelable; -import org.thoughtcrime.securesms.database.IdentityDatabase; import org.thoughtcrime.securesms.database.IdentityDatabase.IdentityRecord; import org.thoughtcrime.securesms.database.model.MessageRecord; import org.thoughtcrime.securesms.logging.Log; @@ -269,12 +265,7 @@ public class ConversationUpdateItem extends LinearLayout @Override public void onSuccess(Optional result) { if (result.isPresent()) { - Intent intent = new Intent(getContext(), VerifyIdentityActivity.class); - intent.putExtra(VerifyIdentityActivity.RECIPIENT_EXTRA, sender.getId()); - intent.putExtra(VerifyIdentityActivity.IDENTITY_EXTRA, new IdentityKeyParcelable(result.get().getIdentityKey())); - intent.putExtra(VerifyIdentityActivity.VERIFIED_EXTRA, result.get().getVerifiedStatus() == IdentityDatabase.VerifiedStatus.VERIFIED); - - getContext().startActivity(intent); + getContext().startActivity(VerifyIdentityActivity.newIntent(getContext(), result.get())); } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/VerifySpan.java b/app/src/main/java/org/thoughtcrime/securesms/util/VerifySpan.java index 66081ab91b..0a3f61d323 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/VerifySpan.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/VerifySpan.java @@ -1,13 +1,12 @@ package org.thoughtcrime.securesms.util; import android.content.Context; -import android.content.Intent; -import androidx.annotation.NonNull; import android.text.style.ClickableSpan; import android.view.View; +import androidx.annotation.NonNull; + import org.thoughtcrime.securesms.VerifyIdentityActivity; -import org.thoughtcrime.securesms.crypto.IdentityKeyParcelable; import org.thoughtcrime.securesms.database.documents.IdentityKeyMismatch; import org.thoughtcrime.securesms.recipients.RecipientId; import org.whispersystems.libsignal.IdentityKey; @@ -32,10 +31,6 @@ public class VerifySpan extends ClickableSpan { @Override public void onClick(@NonNull View widget) { - Intent intent = new Intent(context, VerifyIdentityActivity.class); - intent.putExtra(VerifyIdentityActivity.RECIPIENT_EXTRA, recipientId); - intent.putExtra(VerifyIdentityActivity.IDENTITY_EXTRA, new IdentityKeyParcelable(identityKey)); - intent.putExtra(VerifyIdentityActivity.VERIFIED_EXTRA, false); - context.startActivity(intent); + context.startActivity(VerifyIdentityActivity.newIntent(context, recipientId, identityKey, false)); } }