diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java index ed1f002ee0..cf17354b7a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java @@ -999,6 +999,7 @@ public class ConversationFragment extends Fragment if (messageRecord.isSecure() && !messageRecord.isUpdate() && + !recipient.get().isBlocked() && ((ConversationAdapter) list.getAdapter()).getSelectedItems().isEmpty()) { isReacting = true; diff --git a/app/src/main/java/org/thoughtcrime/securesms/lock/v2/ConfirmKbsPinFragment.java b/app/src/main/java/org/thoughtcrime/securesms/lock/v2/ConfirmKbsPinFragment.java index b34c2b693f..bdacc0e5e4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/lock/v2/ConfirmKbsPinFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/lock/v2/ConfirmKbsPinFragment.java @@ -2,8 +2,10 @@ package org.thoughtcrime.securesms.lock.v2; import android.animation.Animator; import android.app.Activity; +import android.content.Context; import android.content.Intent; import android.view.View; +import android.view.inputmethod.InputMethodManager; import androidx.annotation.NonNull; import androidx.annotation.RawRes; @@ -75,6 +77,7 @@ public class ConfirmKbsPinFragment extends BaseKbsPinFragment handleForgottenPin(timeRemaining)); @@ -78,10 +84,7 @@ public final class RegistrationLockFragment extends BaseRegistrationFragment { return false; }); - pinEntry.setFocusable(true); - if (pinEntry.requestFocus()) { - ServiceUtil.getInputMethodManager(pinEntry.getContext()).showSoftInput(pinEntry, 0); - } + enableAndFocusPinEntry(); pinButton.setOnClickListener((v) -> { hideKeyboard(requireContext(), pinEntry); @@ -136,6 +139,8 @@ public final class RegistrationLockFragment extends BaseRegistrationFragment { } private void handlePinEntry() { + pinEntry.setEnabled(false); + final String pin = pinEntry.getText().toString(); int trimmedLength = pin.replace(" ", "").length(); @@ -179,6 +184,7 @@ public final class RegistrationLockFragment extends BaseRegistrationFragment { cancelSpinning(pinButton); pinEntry.getText().clear(); + enableAndFocusPinEntry(); errorLabel.setText(R.string.RegistrationLockFragment__incorrect_pin); } @@ -192,6 +198,7 @@ public final class RegistrationLockFragment extends BaseRegistrationFragment { public void onIncorrectKbsRegistrationLockPin(@NonNull TokenResponse tokenResponse) { cancelSpinning(pinButton); pinEntry.getText().clear(); + enableAndFocusPinEntry(); model.setKeyBackupCurrentToken(tokenResponse); @@ -224,6 +231,7 @@ public final class RegistrationLockFragment extends BaseRegistrationFragment { @Override public void onRateLimited() { cancelSpinning(pinButton); + enableAndFocusPinEntry(); new AlertDialog.Builder(requireContext()) .setTitle(R.string.RegistrationActivity_too_many_attempts) @@ -244,6 +252,7 @@ public final class RegistrationLockFragment extends BaseRegistrationFragment { @Override public void onError() { cancelSpinning(pinButton); + enableAndFocusPinEntry(); Toast.makeText(requireContext(), R.string.RegistrationActivity_error_connecting_to_service, Toast.LENGTH_LONG).show(); } @@ -283,4 +292,13 @@ public final class RegistrationLockFragment extends BaseRegistrationFragment { return R.string.RegistrationLockFragment__enter_numeric_pin; } } + + private void enableAndFocusPinEntry() { + pinEntry.setEnabled(true); + pinEntry.setFocusable(true); + + if (pinEntry.requestFocus()) { + ServiceUtil.getInputMethodManager(pinEntry.getContext()).showSoftInput(pinEntry, 0); + } + } } diff --git a/app/src/main/res/navigation/registration.xml b/app/src/main/res/navigation/registration.xml index 01d3343c2b..ac06ad38dd 100644 --- a/app/src/main/res/navigation/registration.xml +++ b/app/src/main/res/navigation/registration.xml @@ -151,6 +151,10 @@ android:name="timeRemaining" app:argType="long" /> + +