Skip to content

Commit

Permalink
Merge pull request #3 from martenrebane/nfc-improvements-2
Browse files Browse the repository at this point in the history
NFC length checking fixes
  • Loading branch information
lauris71 authored Apr 29, 2024
2 parents e58c7c8 + bf7586e commit ddcbcef
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 5 deletions.
6 changes: 6 additions & 0 deletions app/src/main/java/ee/ria/DigiDoc/android/Constants.java
Original file line number Diff line number Diff line change
Expand Up @@ -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
*/
Expand Down
Original file line number Diff line number Diff line change
@@ -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;
Expand Down Expand Up @@ -80,13 +81,13 @@ public NFCView(Context context) {
}

public Observable<Object> 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
Expand Down Expand Up @@ -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),
Expand All @@ -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));
Expand Down
1 change: 1 addition & 0 deletions app/src/main/res/values-et/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -293,6 +293,7 @@
<string name="signature_update_id_card_sign_pin2_invalid_final">Vale PIN2. Järgmise vale sisestusega lukustub PIN.</string>
<string name="signature_update_id_card_sign_pin2_locked">PIN2 on lukus. Mine Minu eID, et avada.</string>

<string name="nfc_sign_can_invalid_length">CAN-kood peab olema %1$s-kohaline</string>
<string name="id_card_sign_pin_invalid_length">%1$s-kood peab olema vähemalt %2$s-kohaline ja maksimaalselt %3$s-kohaline</string>

<string name="signature_update_nfc_message">Enter your CAN number and PIN 2 code to sign with ID-Card using NFC</string>
Expand Down
1 change: 1 addition & 0 deletions app/src/main/res/values-ru/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -295,6 +295,7 @@
<string name="signature_update_id_card_sign_pin2_invalid_final">Неверный PIN2. У Вас осталась 1 попытка до блокировки Вашего PIN2.</string>
<string name="signature_update_id_card_sign_pin2_locked">PIN2 заблокирован. Зайдите в Мой eID, чтобы разблокировать его.</string>

<string name="nfc_sign_can_invalid_length">CAN-код должен состоять из %1$s символов</string>
<string name="id_card_sign_pin_invalid_length">%1$s-код должен состоять минимум из %2$s и максимум из %3$s символов</string>

<string name="signature_update_nfc_message">Enter your CAN number and PIN 2 code to sign with ID-Card using NFC</string>
Expand Down
1 change: 1 addition & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -293,6 +293,7 @@
<string name="signature_update_id_card_sign_pin2_invalid_final">Wrong PIN2. You have 1 attempt left until your PIN2 is blocked.</string>
<string name="signature_update_id_card_sign_pin2_locked">PIN2 blocked. Go to My eID to unblock it.</string>

<string name="nfc_sign_can_invalid_length">CAN-code must be %1$s digits long</string>
<string name="id_card_sign_pin_invalid_length">%1$s code must be at least %2$s and a maximum of %3$s digits long</string>

<string name="signature_update_nfc_message">Enter your CAN and PIN 2 code to sign with ID-Card using NFC</string>
Expand Down

0 comments on commit ddcbcef

Please sign in to comment.