Various PIN bug fixes.

master
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() &&
!messageRecord.isUpdate() &&
!recipient.get().isBlocked() &&
((ConversationAdapter) list.getAdapter()).getSelectedItems().isEmpty())
{
isReacting = true;

View File

@ -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<ConfirmKbsPinViewM
break;
case CREATING_PIN:
getLabel().setText(R.string.ConfirmKbsPinFragment__creating_pin);
getInput().setEnabled(false);
break;
case RE_ENTER_PIN:
getLabel().setText(R.string.ConfirmKbsPinFragment__re_enter_pin);

View File

@ -127,7 +127,7 @@ public final class EnterCodeFragment extends BaseRegistrationFragment {
@Override
public void onSuccess(Boolean r) {
Navigation.findNavController(requireView())
.navigate(EnterCodeFragmentDirections.actionRequireKbsLockPin(timeRemaining));
.navigate(EnterCodeFragmentDirections.actionRequireKbsLockPin(timeRemaining, true));
}
});
}
@ -141,7 +141,7 @@ public final class EnterCodeFragment extends BaseRegistrationFragment {
@Override
public void onSuccess(Boolean r) {
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);
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.setOnClickListener(v -> 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);
}
}
}

View File

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