Various PIN bug fixes.

This commit is contained in:
Alex Hart 2020-02-19 17:23:36 -04:00 committed by Greyson Parrelli
parent 0a883dc234
commit dc689d325b
5 changed files with 33 additions and 7 deletions

View File

@ -999,6 +999,7 @@ public class ConversationFragment extends Fragment
if (messageRecord.isSecure() && if (messageRecord.isSecure() &&
!messageRecord.isUpdate() && !messageRecord.isUpdate() &&
!recipient.get().isBlocked() &&
((ConversationAdapter) list.getAdapter()).getSelectedItems().isEmpty()) ((ConversationAdapter) list.getAdapter()).getSelectedItems().isEmpty())
{ {
isReacting = true; isReacting = true;

View File

@ -2,8 +2,10 @@ package org.thoughtcrime.securesms.lock.v2;
import android.animation.Animator; import android.animation.Animator;
import android.app.Activity; import android.app.Activity;
import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.view.View; import android.view.View;
import android.view.inputmethod.InputMethodManager;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.RawRes; import androidx.annotation.RawRes;
@ -75,6 +77,7 @@ public class ConfirmKbsPinFragment extends BaseKbsPinFragment<ConfirmKbsPinViewM
break; break;
case CREATING_PIN: case CREATING_PIN:
getLabel().setText(R.string.ConfirmKbsPinFragment__creating_pin); getLabel().setText(R.string.ConfirmKbsPinFragment__creating_pin);
getInput().setEnabled(false);
break; break;
case RE_ENTER_PIN: case RE_ENTER_PIN:
getLabel().setText(R.string.ConfirmKbsPinFragment__re_enter_pin); getLabel().setText(R.string.ConfirmKbsPinFragment__re_enter_pin);

View File

@ -127,7 +127,7 @@ public final class EnterCodeFragment extends BaseRegistrationFragment {
@Override @Override
public void onSuccess(Boolean r) { public void onSuccess(Boolean r) {
Navigation.findNavController(requireView()) Navigation.findNavController(requireView())
.navigate(EnterCodeFragmentDirections.actionRequireKbsLockPin(timeRemaining)); .navigate(EnterCodeFragmentDirections.actionRequireKbsLockPin(timeRemaining, true));
} }
}); });
} }
@ -141,7 +141,7 @@ public final class EnterCodeFragment extends BaseRegistrationFragment {
@Override @Override
public void onSuccess(Boolean r) { public void onSuccess(Boolean r) {
Navigation.findNavController(requireView()) Navigation.findNavController(requireView())
.navigate(EnterCodeFragmentDirections.actionRequireKbsLockPin(timeRemaining)); .navigate(EnterCodeFragmentDirections.actionRequireKbsLockPin(timeRemaining, false));
} }
}); });
} }

View File

@ -63,7 +63,13 @@ public final class RegistrationLockFragment extends BaseRegistrationFragment {
keyboardToggle = view.findViewById(R.id.kbs_lock_keyboard_toggle); keyboardToggle = view.findViewById(R.id.kbs_lock_keyboard_toggle);
forgotPin = view.findViewById(R.id.kbs_lock_forgot_pin); forgotPin = view.findViewById(R.id.kbs_lock_forgot_pin);
timeRemaining = RegistrationLockFragmentArgs.fromBundle(requireArguments()).getTimeRemaining(); RegistrationLockFragmentArgs args = RegistrationLockFragmentArgs.fromBundle(requireArguments());
timeRemaining = args.getTimeRemaining();
if (args.getIsV1RegistrationLock()) {
keyboardToggle.setVisibility(View.GONE);
}
forgotPin.setVisibility(View.GONE); forgotPin.setVisibility(View.GONE);
forgotPin.setOnClickListener(v -> handleForgottenPin(timeRemaining)); forgotPin.setOnClickListener(v -> handleForgottenPin(timeRemaining));
@ -78,10 +84,7 @@ public final class RegistrationLockFragment extends BaseRegistrationFragment {
return false; return false;
}); });
pinEntry.setFocusable(true); enableAndFocusPinEntry();
if (pinEntry.requestFocus()) {
ServiceUtil.getInputMethodManager(pinEntry.getContext()).showSoftInput(pinEntry, 0);
}
pinButton.setOnClickListener((v) -> { pinButton.setOnClickListener((v) -> {
hideKeyboard(requireContext(), pinEntry); hideKeyboard(requireContext(), pinEntry);
@ -136,6 +139,8 @@ public final class RegistrationLockFragment extends BaseRegistrationFragment {
} }
private void handlePinEntry() { private void handlePinEntry() {
pinEntry.setEnabled(false);
final String pin = pinEntry.getText().toString(); final String pin = pinEntry.getText().toString();
int trimmedLength = pin.replace(" ", "").length(); int trimmedLength = pin.replace(" ", "").length();
@ -179,6 +184,7 @@ public final class RegistrationLockFragment extends BaseRegistrationFragment {
cancelSpinning(pinButton); cancelSpinning(pinButton);
pinEntry.getText().clear(); pinEntry.getText().clear();
enableAndFocusPinEntry();
errorLabel.setText(R.string.RegistrationLockFragment__incorrect_pin); errorLabel.setText(R.string.RegistrationLockFragment__incorrect_pin);
} }
@ -192,6 +198,7 @@ public final class RegistrationLockFragment extends BaseRegistrationFragment {
public void onIncorrectKbsRegistrationLockPin(@NonNull TokenResponse tokenResponse) { public void onIncorrectKbsRegistrationLockPin(@NonNull TokenResponse tokenResponse) {
cancelSpinning(pinButton); cancelSpinning(pinButton);
pinEntry.getText().clear(); pinEntry.getText().clear();
enableAndFocusPinEntry();
model.setKeyBackupCurrentToken(tokenResponse); model.setKeyBackupCurrentToken(tokenResponse);
@ -224,6 +231,7 @@ public final class RegistrationLockFragment extends BaseRegistrationFragment {
@Override @Override
public void onRateLimited() { public void onRateLimited() {
cancelSpinning(pinButton); cancelSpinning(pinButton);
enableAndFocusPinEntry();
new AlertDialog.Builder(requireContext()) new AlertDialog.Builder(requireContext())
.setTitle(R.string.RegistrationActivity_too_many_attempts) .setTitle(R.string.RegistrationActivity_too_many_attempts)
@ -244,6 +252,7 @@ public final class RegistrationLockFragment extends BaseRegistrationFragment {
@Override @Override
public void onError() { public void onError() {
cancelSpinning(pinButton); cancelSpinning(pinButton);
enableAndFocusPinEntry();
Toast.makeText(requireContext(), R.string.RegistrationActivity_error_connecting_to_service, Toast.LENGTH_LONG).show(); 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; 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);
}
}
} }

View File

@ -151,6 +151,10 @@
android:name="timeRemaining" android:name="timeRemaining"
app:argType="long" /> app:argType="long" />
<argument
android:name="isV1RegistrationLock"
app:argType="boolean" />
</fragment> </fragment>
<fragment <fragment