toast for wrong password

This commit is contained in:
moon 2026-03-12 16:46:56 +06:30
parent 3e4b3e88a4
commit ef74f2cc82
3 changed files with 28 additions and 3 deletions

View File

@ -3,6 +3,7 @@ package com.utsmm.kbz.ui.core_ui;
import android.os.Bundle; import android.os.Bundle;
import android.text.TextUtils; import android.text.TextUtils;
import android.view.View; import android.view.View;
import android.widget.Toast;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
@ -158,6 +159,7 @@ public class EmvTransactionFragment extends DataBindingFragment {
} }
observeEmvResultStatus(); observeEmvResultStatus();
observePinWarning();
} }
private boolean isNotManualTransaction() { private boolean isNotManualTransaction() {
@ -349,6 +351,15 @@ public class EmvTransactionFragment extends DataBindingFragment {
}); });
} }
private void observePinWarning() {
emvTransactionViewModel.pinRemainingCount.observe(getViewLifecycleOwner(), msg -> {
if (!TextUtils.isEmpty(msg)) {
Toast.makeText(requireContext(), msg, Toast.LENGTH_SHORT).show();
emvTransactionViewModel.pinRemainingCount.setValue("");
}
});
}
private void observeEmvErrorCode() { private void observeEmvErrorCode() {
dismissLoadingDialog(); dismissLoadingDialog();
emvTransactionViewModel.errorCodeMsg.observe(getViewLifecycleOwner(), pair -> { emvTransactionViewModel.errorCodeMsg.observe(getViewLifecycleOwner(), pair -> {

View File

@ -120,16 +120,17 @@
<TextView <TextView
android:id="@+id/txt_emv_remaining_count" android:id="@+id/txt_emv_remaining_count"
android:layout_width="wrap_content" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/margin_button" android:layout_marginTop="@dimen/margin_button"
android:fontFamily="@font/rubik_regular" android:fontFamily="@font/rubik_regular"
android:gravity="center"
android:text="@{emv.pinRemainingCount}" android:text="@{emv.pinRemainingCount}"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="@dimen/pan_size" android:textSize="@dimen/pan_size"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/textView3" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView20" app:layout_constraintTop_toBottomOf="@+id/txt_emv_pin_mode"
app:layout_goneMarginTop="@dimen/margin_button" app:layout_goneMarginTop="@dimen/margin_button"
tools:text="3 LEFT" /> tools:text="3 LEFT" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -1,5 +1,6 @@
package com.utsmyanmar.baselib.viewModel; package com.utsmyanmar.baselib.viewModel;
import android.app.AlertDialog;
import android.graphics.Rect; import android.graphics.Rect;
import android.os.Handler; import android.os.Handler;
import android.os.Looper; import android.os.Looper;
@ -8,6 +9,7 @@ import android.os.RemoteException;
import android.util.Log; import android.util.Log;
import android.view.View; import android.view.View;
import android.view.ViewTreeObserver; import android.view.ViewTreeObserver;
import android.widget.Toast;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.MutableLiveData;
@ -106,6 +108,7 @@ public abstract class EmvBaseViewModel extends BaseViewModel {
public MutableLiveData<Integer> pinPadVisibility = new MutableLiveData<>(8); public MutableLiveData<Integer> pinPadVisibility = new MutableLiveData<>(8);
protected int pinEnterCount; protected int pinEnterCount;
private int offlinePinIncorrectPromptCount;
public CustomPinPadKeyboard customPinPadKeyboard; public CustomPinPadKeyboard customPinPadKeyboard;
private int mWidth = 239; // Single item width of password keyboard private int mWidth = 239; // Single item width of password keyboard
@ -636,6 +639,9 @@ public abstract class EmvBaseViewModel extends BaseViewModel {
public void onCardHolderInputPin(boolean isOnlinePin, int leftTimes) { public void onCardHolderInputPin(boolean isOnlinePin, int leftTimes) {
LogUtil.d(TAG, "onCardHolderInputPin isOnlinePin = " + isOnlinePin); LogUtil.d(TAG, "onCardHolderInputPin isOnlinePin = " + isOnlinePin);
LogUtil.d(TAG, "onCardHolderInputPin leftTimes = " + leftTimes); LogUtil.d(TAG, "onCardHolderInputPin leftTimes = " + leftTimes);
if (isOnlinePin) {
pinRemainingCount.postValue("");
}
// startPinProcess(isOnlinePin ? 1 : 0); // startPinProcess(isOnlinePin ? 1 : 0);
mProcessStep = EMV_SHOW_PIN_PAD; mProcessStep = EMV_SHOW_PIN_PAD;
// mHandler.obtainMessage(EMV_SHOW_PIN_PAD, isOnlinePin ? 1 : 0).sendToTarget(); // mHandler.obtainMessage(EMV_SHOW_PIN_PAD, isOnlinePin ? 1 : 0).sendToTarget();
@ -675,7 +681,13 @@ public abstract class EmvBaseViewModel extends BaseViewModel {
public void onPrompt(PromptEnum promptEnum) { public void onPrompt(PromptEnum promptEnum) {
LogUtil.d(TAG, "onPrompt->" + promptEnum); LogUtil.d(TAG, "onPrompt->" + promptEnum);
if( promptEnum == PromptEnum.OFFLINE_PIN_INCORRECT_TRY_AGAIN) { if( promptEnum == PromptEnum.OFFLINE_PIN_INCORRECT_TRY_AGAIN) {
offlinePinIncorrectPromptCount++;
pinEnterCount = 0;
pinText.postValue("");
int attemptLeft = Math.max(0, 3 - offlinePinIncorrectPromptCount);
pinRemainingCount.postValue("Please try again!\n" + attemptLeft + " attempt left!");
emvHandler.onSetPromptResponse(false); emvHandler.onSetPromptResponse(false);
} else { } else {
emvHandler.onSetPromptResponse(true); emvHandler.onSetPromptResponse(true);
} }
@ -902,6 +914,7 @@ public abstract class EmvBaseViewModel extends BaseViewModel {
emvCardType.postValue(""); emvCardType.postValue("");
pinText.setValue(""); pinText.setValue("");
pinEnterCount = 0; pinEnterCount = 0;
offlinePinIncorrectPromptCount = 0;
} }
protected void getCardInfo() { protected void getCardInfo() {