diff --git a/app/src/main/java/ee/ria/DigiDoc/android/Constants.java b/app/src/main/java/ee/ria/DigiDoc/android/Constants.java index 319c1f75d..5d06aeebc 100644 --- a/app/src/main/java/ee/ria/DigiDoc/android/Constants.java +++ b/app/src/main/java/ee/ria/DigiDoc/android/Constants.java @@ -31,6 +31,12 @@ public final class Constants { */ public static final int MAXIMUM_PERSONAL_CODE_LENGTH = 11; + /** + * CAN number + */ + + public static final int CAN_LENGTH = 6; + /** * View type to identify screen when restarting app */ diff --git a/app/src/main/java/ee/ria/DigiDoc/android/signature/update/nfc/NFCView.java b/app/src/main/java/ee/ria/DigiDoc/android/signature/update/nfc/NFCView.java index b5fc2847d..58ea6049c 100644 --- a/app/src/main/java/ee/ria/DigiDoc/android/signature/update/nfc/NFCView.java +++ b/app/src/main/java/ee/ria/DigiDoc/android/signature/update/nfc/NFCView.java @@ -1,6 +1,7 @@ package ee.ria.DigiDoc.android.signature.update.nfc; import static com.jakewharton.rxbinding4.widget.RxTextView.afterTextChangeEvents; +import static ee.ria.DigiDoc.android.Constants.CAN_LENGTH; import static ee.ria.DigiDoc.android.accessibility.AccessibilityUtils.removeAccessibilityStateChanged; import static ee.ria.DigiDoc.common.PinConstants.PIN2_MIN_LENGTH; import static ee.ria.DigiDoc.common.PinConstants.PIN_MAX_LENGTH; @@ -80,13 +81,13 @@ public NFCView(Context context) { } public Observable positiveButtonState() { - return Observable.merge(positiveButtonStateSubject, afterTextChangeEvents(pinView)); + return Observable.merge(positiveButtonStateSubject, afterTextChangeEvents(canView) , afterTextChangeEvents(pinView)); } public boolean positiveButtonEnabled() { Editable canText = canView.getText(); Editable pinText = pinView.getText(); - return canText != null && canText.length() == 6 && pinText != null && isPinLengthValid(pinText.toString()); + return canText != null && isCANLengthValid(canText.toString()) && pinText != null && isPinLengthValid(pinText.toString()); } @Override @@ -118,17 +119,29 @@ public void response(@Nullable NFCResponse response, @Nullable RadioGroup method } private void checkInputsValidity() { - checkPinCodeValidity(); + canView.setOnFocusChangeListener((view, hasfocus) -> checkCANCodeValidity()); pinView.setOnFocusChangeListener((view, hasfocus) -> checkPinCodeValidity()); } + private void checkCANCodeValidity() { + canLayout.setError(null); + Editable canCodeView = canView.getText(); + if (canCodeView != null && !canCodeView.toString().isEmpty() && + !isCANLengthValid(canCodeView.toString()) + ) { + canLayout.setError(getResources().getString( + R.string.nfc_sign_can_invalid_length, + Integer.toString(CAN_LENGTH))); + } + } + private void checkPinCodeValidity() { - pinLabel.setError(null); + pinLayout.setError(null); Editable pinCodeView = pinView.getText(); if (pinCodeView != null && !pinCodeView.toString().isEmpty() && !isPinLengthValid(pinCodeView.toString()) ) { - pinLabel.setError(getResources().getString( + pinLayout.setError(getResources().getString( R.string.id_card_sign_pin_invalid_length, getResources().getString(R.string.signature_id_card_pin2), Integer.toString(PIN2_MIN_LENGTH), @@ -141,6 +154,10 @@ private boolean isPinLengthValid(String pin) { pin.length() <= PinConstants.PIN_MAX_LENGTH; } + private boolean isCANLengthValid(String can) { + return can.length() == CAN_LENGTH; + } + private void setAccessibilityDescription() { canView.setContentDescription(getResources().getString(R.string.signature_update_nfc_can) + " " + AccessibilityUtils.getTextViewAccessibility(canView)); diff --git a/app/src/main/res/values-et/strings.xml b/app/src/main/res/values-et/strings.xml index a184dbdf0..58f51cf80 100644 --- a/app/src/main/res/values-et/strings.xml +++ b/app/src/main/res/values-et/strings.xml @@ -293,6 +293,7 @@ Vale PIN2. Järgmise vale sisestusega lukustub PIN. PIN2 on lukus. Mine Minu eID, et avada. + CAN-kood peab olema %1$s-kohaline %1$s-kood peab olema vähemalt %2$s-kohaline ja maksimaalselt %3$s-kohaline Enter your CAN number and PIN 2 code to sign with ID-Card using NFC diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 9d91fbd7d..014fc8e94 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -295,6 +295,7 @@ Неверный PIN2. У Вас осталась 1 попытка до блокировки Вашего PIN2. PIN2 заблокирован. Зайдите в Мой eID, чтобы разблокировать его. + CAN-код должен состоять из %1$s символов %1$s-код должен состоять минимум из %2$s и максимум из %3$s символов Enter your CAN number and PIN 2 code to sign with ID-Card using NFC diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f8ffbbd0b..8ea82eed5 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -293,6 +293,7 @@ Wrong PIN2. You have 1 attempt left until your PIN2 is blocked. PIN2 blocked. Go to My eID to unblock it. + CAN-code must be %1$s digits long %1$s code must be at least %2$s and a maximum of %3$s digits long Enter your CAN and PIN 2 code to sign with ID-Card using NFC