Browse Source

Transaction password screen refactored

master
Preyea Regmi 5 years ago
parent
commit
d6e42383eb
  1. 1
      app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/view/HomeActivityV2.java
  2. 41
      app/src/main/java/com/gmeremit/online/gmeremittance_native/resendV2/presenter/resend/ReSendMoneyV2Presenter.java
  3. 6
      app/src/main/java/com/gmeremit/online/gmeremittance_native/resendV2/presenter/resend/ReSendMoneyV2PresenterInterface.java
  4. 14
      app/src/main/java/com/gmeremit/online/gmeremittance_native/resendV2/view/ReSendMoneyV2Activity.java
  5. 10
      app/src/main/java/com/gmeremit/online/gmeremittance_native/sendmoneyV2/model/SendMoneyAPIRequestBody.java
  6. 39
      app/src/main/java/com/gmeremit/online/gmeremittance_native/sendmoneyV2/presenter/SendMoneyV2Presenter.java
  7. 7
      app/src/main/java/com/gmeremit/online/gmeremittance_native/sendmoneyV2/presenter/SendMoneyV2PresenterInterface.java
  8. 14
      app/src/main/java/com/gmeremit/online/gmeremittance_native/sendmoneyV2/view/SendMoneyV2Activity.java
  9. 3
      app/src/main/java/com/gmeremit/online/gmeremittance_native/transactionpasspromt/presenter/TransactionPasswordPromptV2Presenter.java
  10. 236
      app/src/main/java/com/gmeremit/online/gmeremittance_native/transactionpasspromt/view/TransactionBiometricPromptDialog.java
  11. 45
      app/src/main/java/com/gmeremit/online/gmeremittance_native/transactionpasspromt/view/TransactionPasswordPromptDialog.java
  12. 52
      app/src/main/res/layout/dialog_password_prompt_v2.xml

1
app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/view/HomeActivityV2.java

@ -46,6 +46,7 @@ import com.gmeremit.online.gmeremittance_native.settings.view.SettingsView;
import com.gmeremit.online.gmeremittance_native.static_pages.view.AboutGME;
import com.gmeremit.online.gmeremittance_native.static_pages.view.SupportActivity;
import com.gmeremit.online.gmeremittance_native.transactionhistoryV2.view.TransactionHistoryActivityV2;
import com.gmeremit.online.gmeremittance_native.transactionpasspromt.view.TransactionBiometricPromptDialog;
import com.gmeremit.online.gmeremittance_native.user_profile.view.ProfileActivity;
import com.gmeremit.online.gmeremittance_native.utils.Utils;
import com.gmeremit.online.gmeremittance_native.walletstatementV2.view.WalletStatementV2Activity;

41
app/src/main/java/com/gmeremit/online/gmeremittance_native/resendV2/presenter/resend/ReSendMoneyV2Presenter.java

@ -14,12 +14,14 @@ import com.gmeremit.online.gmeremittance_native.resendV2.model.transactionlistin
import com.gmeremit.online.gmeremittance_native.sendmoneyV2.model.SendMoneyTransactionResponseBody;
import com.gmeremit.online.gmeremittance_native.sendmoneyV2.model.verification.VerificationViewModel;
import com.gmeremit.online.gmeremittance_native.transactionpasspromt.PasswordPromptListener;
import com.gmeremit.online.gmeremittance_native.transactionpasspromt.view.TransactionBiometricPromptDialog;
import com.gmeremit.online.gmeremittance_native.utils.Constants;
import com.gmeremit.online.gmeremittance_native.utils.Utils;
import com.gmeremit.online.gmeremittance_native.utils.https.GenericApiObserverResponse;
import com.gmeremit.online.gmeremittance_native.utils.https.GenericApiObserverResponseV2;
import com.gmeremit.online.gmeremittance_native.utils.https.GenericResponseDataModel;
import com.gmeremit.online.gmeremittance_native.utils.https.HTTPConstants;
import com.gmeremit.online.gmeremittance_native.utils.security.SecurityUtils;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
@ -117,19 +119,36 @@ public class ReSendMoneyV2Presenter extends BasePresenter implements ReSendMoney
}
private boolean checkIfUserHasEnabledBiometricAuth() {
return SecurityUtils.checkFingerPrintUsablity(view.getContext()) && gateway.isFingerPrintAuthEnabled() && gateway.getPersistedUserId() != null && gateway.getPersistedUserPwd() != null;
}
@Override
public void promptPinAndPerformTransaction() {
view.promptPassword(new PasswordPromptListener() {
@Override
public void onPasswordSubmit(String password) {
performSendMoneyTransaction(password);
}
if(checkIfUserHasEnabledBiometricAuth())
{
view.promptBiometricAuthDialog(new TransactionBiometricPromptDialog.BiometricPromptResultListener() {
@Override
public void onBiometricAuthSuccess(String decResult) {
performSendMoneyTransaction(decResult,true);
}
});
}
else {
view.promptPassword(new PasswordPromptListener() {
@Override
public void onPasswordSubmit(String password) {
performSendMoneyTransaction(password,false);
}
@Override
public void onCancelled() {
@Override
public void onCancelled() {
}
}, countDownRemainingValue);
}
}
}, this.countDownRemainingValue);
}
@ -175,12 +194,14 @@ public class ReSendMoneyV2Presenter extends BasePresenter implements ReSendMoney
}
public void performSendMoneyTransaction(String password) {
public void performSendMoneyTransaction(String password,boolean isBiometricUsed) {
resendRelatedData.getRemitDetail().setTxnPassword(password);
resendRelatedData.getRemitDetail().setIsAgreed(Constants.TRUE_STRING);
resendRelatedData.getRemitDetail().setKftcAccountId(previousTransactionRelatedData.getSelectedAutoDebitAccount().getKftcAccountId());
resendRelatedData.getRemitDetail().setPaymentType(previousTransactionRelatedData.getSelectedAutoDebitAccount().getType());
resendRelatedData.getRemitDetail().setUseBiometric(isBiometricUsed);
compositeObservable.add(
gateway.performSendMoneyTransaction(gateway.getAuth(), resendRelatedData.getRemitDetail())

6
app/src/main/java/com/gmeremit/online/gmeremittance_native/resendV2/presenter/resend/ReSendMoneyV2PresenterInterface.java

@ -1,5 +1,7 @@
package com.gmeremit.online.gmeremittance_native.resendV2.presenter.resend;
import android.content.Context;
import com.gmeremit.online.gmeremittance_native.autodebitV2.model.autodebitaccountlisting.WebRequestModel;
import com.gmeremit.online.gmeremittance_native.base.BaseContractInterface;
import com.gmeremit.online.gmeremittance_native.base.BasePresenterInterface;
@ -13,6 +15,7 @@ import com.gmeremit.online.gmeremittance_native.sendmoneyV2.model.payoutmode.Pay
import com.gmeremit.online.gmeremittance_native.sendmoneyV2.model.payoutmode.PayoutModeApiResponse;
import com.gmeremit.online.gmeremittance_native.sendmoneyV2.model.verification.VerificationViewModel;
import com.gmeremit.online.gmeremittance_native.transactionpasspromt.PasswordPromptListener;
import com.gmeremit.online.gmeremittance_native.transactionpasspromt.view.TransactionBiometricPromptDialog;
import io.reactivex.Observable;
@ -59,5 +62,8 @@ public interface ReSendMoneyV2PresenterInterface extends BasePresenterInterface
void showReceiptOnTransactionComplete(String transactionId);
Context getContext();
void promptBiometricAuthDialog(TransactionBiometricPromptDialog.BiometricPromptResultListener biometricPromptResultListener);
}
}

14
app/src/main/java/com/gmeremit/online/gmeremittance_native/resendV2/view/ReSendMoneyV2Activity.java

@ -1,6 +1,7 @@
package com.gmeremit.online.gmeremittance_native.resendV2.view;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.LayoutRes;
@ -19,6 +20,7 @@ import com.gmeremit.online.gmeremittance_native.resendV2.presenter.resend.ReSend
import com.gmeremit.online.gmeremittance_native.resendV2.presenter.resend.ReSendMoneyV2PresenterInterface;
import com.gmeremit.online.gmeremittance_native.sendmoneyV2.view.SendMoneyV2TransactionCompleteActivity;
import com.gmeremit.online.gmeremittance_native.transactionpasspromt.PasswordPromptListener;
import com.gmeremit.online.gmeremittance_native.transactionpasspromt.view.TransactionBiometricPromptDialog;
import com.gmeremit.online.gmeremittance_native.transactionpasspromt.view.TransactionPasswordPromptActivity;
import butterknife.BindView;
@ -212,5 +214,17 @@ public class ReSendMoneyV2Activity extends BaseActivity implements ReSendMoneyV2
startActivity(startReceiptActivity);
}
@Override
public Context getContext() {
return this;
}
@Override
public void promptBiometricAuthDialog(TransactionBiometricPromptDialog.BiometricPromptResultListener listener) {
TransactionBiometricPromptDialog promptDialog= new TransactionBiometricPromptDialog();
promptDialog.setResultListener(listener);
promptDialog.show(getSupportFragmentManager(),promptDialog.getClass().getSimpleName());
}
}

10
app/src/main/java/com/gmeremit/online/gmeremittance_native/sendmoneyV2/model/SendMoneyAPIRequestBody.java

@ -101,6 +101,9 @@ public class SendMoneyAPIRequestBody {
@SerializedName("KftcLogId")
@Expose
private String kftcAccountId;
@SerializedName("isUseBiometric")
@Expose
private boolean isUseBiometric;
public String getUser() {
@ -351,6 +354,13 @@ public class SendMoneyAPIRequestBody {
this.receiverAccountNo = receiverAccountNo;
}
public boolean isUseBiometric() {
return isUseBiometric;
}
public void setUseBiometric(boolean useBiometric) {
isUseBiometric = useBiometric;
}
@Override
public String toString() {

39
app/src/main/java/com/gmeremit/online/gmeremittance_native/sendmoneyV2/presenter/SendMoneyV2Presenter.java

@ -22,9 +22,11 @@ import com.gmeremit.online.gmeremittance_native.sendmoneyV2.model.payoutmode.Pay
import com.gmeremit.online.gmeremittance_native.sendmoneyV2.model.payoutmode.PayoutModeApiResponse;
import com.gmeremit.online.gmeremittance_native.sendmoneyV2.model.verification.VerificationViewModel;
import com.gmeremit.online.gmeremittance_native.transactionpasspromt.PasswordPromptListener;
import com.gmeremit.online.gmeremittance_native.transactionpasspromt.view.TransactionBiometricPromptDialog;
import com.gmeremit.online.gmeremittance_native.utils.Constants;
import com.gmeremit.online.gmeremittance_native.utils.Utils;
import com.gmeremit.online.gmeremittance_native.utils.https.GenericApiObserverResponse;
import com.gmeremit.online.gmeremittance_native.utils.security.SecurityUtils;
import java.util.ArrayList;
import java.util.List;
@ -190,19 +192,35 @@ public class SendMoneyV2Presenter extends BasePresenter implements SendMoneyV2Pr
selectedTransferAmount = null;
}
private boolean checkIfUserHasEnabledBiometricAuth() {
return SecurityUtils.checkFingerPrintUsablity(view.getContext()) && gateway.isFingerPrintAuthEnabled() && gateway.getPersistedUserId() != null && gateway.getPersistedUserPwd() != null;
}
@Override
public void promptPinAndPerformTransaction() {
view.promptPassword(new PasswordPromptListener() {
@Override
public void onPasswordSubmit(String password) {
performSendMoneyTransaction(password);
}
if(checkIfUserHasEnabledBiometricAuth())
{
view.promptBiometricAuthDialog(new TransactionBiometricPromptDialog.BiometricPromptResultListener() {
@Override
public void onBiometricAuthSuccess(String decResult) {
performSendMoneyTransaction(decResult,true);
}
});
}
else {
view.promptPassword(new PasswordPromptListener() {
@Override
public void onPasswordSubmit(String password) {
performSendMoneyTransaction(password,false);
}
@Override
public void onCancelled() {
@Override
public void onCancelled() {
}
}, countDownRemainingValue);
}
}, countDownRemainingValue);
}
}
@ -235,7 +253,7 @@ public class SendMoneyV2Presenter extends BasePresenter implements SendMoneyV2Pr
}
public void performSendMoneyTransaction(String password) {
private void performSendMoneyTransaction(String password,boolean isBiometricUsed) {
SendMoneyAPIRequestBody sendMoneyAPIRequestBody = new SendMoneyAPIRequestBody();
@ -287,6 +305,7 @@ public class SendMoneyV2Presenter extends BasePresenter implements SendMoneyV2Pr
sendMoneyAPIRequestBody.setKftcAccountId(selectedPaymentType.getKftcAccountId());
sendMoneyAPIRequestBody.setTxnPassword(password);
sendMoneyAPIRequestBody.setUseBiometric(isBiometricUsed);
compositeObservable.add(
gateway.performSendMoneyTransaction(gateway.getAuth(), sendMoneyAPIRequestBody)

7
app/src/main/java/com/gmeremit/online/gmeremittance_native/sendmoneyV2/presenter/SendMoneyV2PresenterInterface.java

@ -1,5 +1,7 @@
package com.gmeremit.online.gmeremittance_native.sendmoneyV2.presenter;
import android.content.Context;
import com.gmeremit.online.gmeremittance_native.autodebitV2.model.autodebitaccountlisting.WebRequestModel;
import com.gmeremit.online.gmeremittance_native.base.BaseContractInterface;
import com.gmeremit.online.gmeremittance_native.base.BasePresenterInterface;
@ -13,6 +15,7 @@ import com.gmeremit.online.gmeremittance_native.sendmoneyV2.model.payoutmode.Pay
import com.gmeremit.online.gmeremittance_native.sendmoneyV2.model.payoutmode.PayoutModeApiResponse;
import com.gmeremit.online.gmeremittance_native.sendmoneyV2.model.verification.VerificationViewModel;
import com.gmeremit.online.gmeremittance_native.transactionpasspromt.PasswordPromptListener;
import com.gmeremit.online.gmeremittance_native.transactionpasspromt.view.TransactionBiometricPromptDialog;
import io.reactivex.Observable;
@ -58,8 +61,12 @@ public interface SendMoneyV2PresenterInterface extends BasePresenterInterface {
{
void promptPassword(PasswordPromptListener listener,long countDownValue);
void promptBiometricAuthDialog(TransactionBiometricPromptDialog.BiometricPromptResultListener listener);
void showReceiptOnTransactionComplete(String transactionId);
void updateFinalTransitionToValid(boolean action);
Context getContext();
}
}

14
app/src/main/java/com/gmeremit/online/gmeremittance_native/sendmoneyV2/view/SendMoneyV2Activity.java

@ -1,6 +1,7 @@
package com.gmeremit.online.gmeremittance_native.sendmoneyV2.view;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.LayoutRes;
@ -16,6 +17,7 @@ import com.gmeremit.online.gmeremittance_native.sendmoneyV2.model.SendMoneyRequi
import com.gmeremit.online.gmeremittance_native.sendmoneyV2.presenter.SendMoneyV2Presenter;
import com.gmeremit.online.gmeremittance_native.sendmoneyV2.presenter.SendMoneyV2PresenterInterface;
import com.gmeremit.online.gmeremittance_native.transactionpasspromt.PasswordPromptListener;
import com.gmeremit.online.gmeremittance_native.transactionpasspromt.view.TransactionBiometricPromptDialog;
import com.gmeremit.online.gmeremittance_native.transactionpasspromt.view.TransactionPasswordPromptActivity;
import butterknife.BindView;
@ -277,6 +279,13 @@ public class SendMoneyV2Activity extends BaseActivity implements SendMoneyAction
startActivityForResult(passwordRequestIntent, PASSWORD_PROMPT_REQUEST);
}
@Override
public void promptBiometricAuthDialog(TransactionBiometricPromptDialog.BiometricPromptResultListener listener) {
TransactionBiometricPromptDialog promptDialog= new TransactionBiometricPromptDialog();
promptDialog.setResultListener(listener);
promptDialog.show(getSupportFragmentManager(),promptDialog.getClass().getSimpleName());
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
@ -315,6 +324,11 @@ public class SendMoneyV2Activity extends BaseActivity implements SendMoneyAction
setRedBg(page3TxtView);
}
@Override
public Context getContext() {
return this;
}
@Override
public void updateFinalTranstionToDefault() {
setDefaultBg(page3TxtView);

3
app/src/main/java/com/gmeremit/online/gmeremittance_native/transactionpasspromt/presenter/TransactionPasswordPromptV2Presenter.java

@ -96,7 +96,8 @@ public class TransactionPasswordPromptV2Presenter extends BasePresenter implemen
@Override
public boolean checkIfUserHasEnabledBiometricAuth() {
return SecurityUtils.checkFingerPrintUsablity(view.getContext()) && gateway.isFingerPrintAuthEnabled() && gateway.getPersistedUserId() != null && gateway.getPersistedUserPwd() != null;
return false;
// return SecurityUtils.checkFingerPrintUsablity(view.getContext()) && gateway.isFingerPrintAuthEnabled() && gateway.getPersistedUserId() != null && gateway.getPersistedUserPwd() != null;
}

236
app/src/main/java/com/gmeremit/online/gmeremittance_native/transactionpasspromt/view/TransactionBiometricPromptDialog.java

@ -0,0 +1,236 @@
package com.gmeremit.online.gmeremittance_native.transactionpasspromt.view;
import android.app.Dialog;
import android.content.SharedPreferences;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.security.keystore.KeyPermanentlyInvalidatedException;
import android.support.graphics.drawable.AnimatedVectorDrawableCompat;
import android.support.v7.app.AlertDialog;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.gmeremit.online.gmeremittance_native.GmeApplication;
import com.gmeremit.online.gmeremittance_native.R;
import com.gmeremit.online.gmeremittance_native.base.PrefKeys;
import com.gmeremit.online.gmeremittance_native.customwidgets.CustomAlertDialog;
import com.gmeremit.online.gmeremittance_native.transactionpasspromt.presenter.TransactionPasswordPromptV2Presenter;
import com.gmeremit.online.gmeremittance_native.utils.security.SecurityUtils;
import com.mtramin.rxfingerprint.data.FingerprintAuthenticationException;
import com.mtramin.rxfingerprint.data.FingerprintDecryptionResult;
import java.util.concurrent.TimeUnit;
import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.disposables.Disposable;
import io.reactivex.observers.DisposableObserver;
import io.reactivex.schedulers.Schedulers;
public class TransactionBiometricPromptDialog extends android.support.v4.app.DialogFragment {
private AnimatedVectorDrawableCompat fingerPrintAVDCompat;
private ImageView passwordPromptImageView;
private Disposable fingerPrintScanningSubscription;
private CompositeDisposable compositeDisposable;
private BiometricPromptResultListener listener;
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
View view = getActivity().getLayoutInflater().inflate(R.layout.dialog_password_prompt_v2, null);
passwordPromptImageView=view.findViewById(R.id.passwordPromptImageView);
builder.setView(view);
Dialog dialog= builder.create();
try {
dialog.getWindow().setBackgroundDrawableResource(R.drawable.ic_rounded_white);
} catch (NullPointerException e) {
}
initialize();
return dialog;
}
private void initialize() {
this.compositeDisposable = new CompositeDisposable();
fingerPrintAVDCompat = AnimatedVectorDrawableCompat.create(getActivity(), R.drawable.avd_fingerprint_off_to_on);
}
public void setResultListener(BiometricPromptResultListener listener)
{
this.listener=listener;
}
@Override
public void onStart() {
super.onStart();
startObservingFingerPrintIfRequired(true);
}
@Override
public void onStop() {
super.onStop();
startObservingFingerPrintIfRequired(false);
}
public void animateFingerPrintAppearAnimationIfRequired(boolean action) {
if (action) {
if (fingerPrintAVDCompat != null && !fingerPrintAVDCompat.isRunning()) {
passwordPromptImageView.setImageDrawable(fingerPrintAVDCompat);
fingerPrintAVDCompat.start();
}
} else {
passwordPromptImageView.setImageDrawable(null);
}
}
public void startObservingFingerPrintIfRequired(boolean action) {
if (!action) {
if (fingerPrintScanningSubscription != null && !fingerPrintScanningSubscription.isDisposed())
fingerPrintScanningSubscription.dispose();
} else {
animateFingerPrintAppearAnimationIfRequired(true);
fingerPrintScanningSubscription = authenticateFingerprint().subscribeWith(new FingerprintDecResultObserver());
compositeDisposable.add(fingerPrintScanningSubscription);
}
}
private Observable<FingerprintDecResult> authenticateFingerprint() {
return Observable.zip(Observable.fromCallable(()-> GmeApplication.getStorage().getString(PrefKeys.APP_USER_ID_SECRET_KEY,null)),
Observable.fromCallable(()->GmeApplication.getStorage().getString(PrefKeys.APP_SECRET_KEY,null))
.flatMap(storedKey -> decryptFromKeyStore(storedKey).flatMap(decAesKey -> SecurityUtils.decryptSymmetric(GmeApplication.getStorage().getString(PrefKeys.APP_USER_SECRET_KEY,null), decAesKey)))
.subscribeOn(Schedulers.io()),
FingerprintDecResult::new)
.doOnSubscribe(subs -> {
animateFingerPrintAppearAnimationIfRequired(true);
})
.observeOn(AndroidSchedulers.mainThread());
}
private Observable<String> decryptFromKeyStore(String data) {
return SecurityUtils.decryptFromKeyStore(getActivity(), data)
.flatMap(authentication -> {
switch (authentication.getResult()) {
case FAILED:
return io.reactivex.Observable.error(new SecurityUtils.FailedFingerPrintException(getString(R.string.fingerprint_not_recognized)));
case HELP:
return io.reactivex.Observable.error(new SecurityUtils.SensorNotReadyException(authentication.getMessage()));
case AUTHENTICATED:
return Observable.just(authentication);
default:
return io.reactivex.Observable.error(new Throwable(authentication.getMessage()));
}
})
.observeOn(AndroidSchedulers.mainThread())
.retryWhen(errors -> errors.flatMap(
error -> {
if (error instanceof SecurityUtils.FailedFingerPrintException || error instanceof SecurityUtils.SensorNotReadyException) {
animateFingerPrintAppearAnimationIfRequired(true);
showToastMessage(error.getMessage());
return Observable.timer(100, TimeUnit.MILLISECONDS);
}
return Observable.error(error);
}
))
.map(FingerprintDecryptionResult::getDecrypted);
}
private void showToastMessage(String message) {
Toast toast=Toast.makeText(getActivity(), message, Toast.LENGTH_SHORT);
TextView v = (TextView) toast.getView().findViewById(android.R.id.message);
if( v != null) v.setGravity(Gravity.CENTER);
toast.show();
}
public class FingerprintDecResult {
String userId;
String userPwd;
public FingerprintDecResult(String userId, String userPwd) {
this.userId = userId;
this.userPwd = userPwd;
}
public String getUserId() {
return userId;
}
public String getUserPwd() {
return userPwd;
}
@Override
public String toString() {
return "FingerprintDecResult{" +
"userId='" + userId + '\'' +
", userPwd='" + userPwd + '\'' +
'}';
}
}
public class FingerprintDecResultObserver extends DisposableObserver<FingerprintDecResult> {
@Override
public void onNext(FingerprintDecResult fingerprintDecResult) {
dismiss();
if(listener!=null)
listener.onBiometricAuthSuccess(fingerprintDecResult.getUserPwd());
}
@Override
public void onError(Throwable e) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && e instanceof KeyPermanentlyInvalidatedException)
{
SharedPreferences.Editor editor = GmeApplication.getStorage().edit();
editor.putString(PrefKeys.APP_USER_ID_SECRET_KEY,null);
editor.putBoolean(PrefKeys.APP_FINGER_PRINT_ENABLED,false);
editor.putString(PrefKeys.APP_USER_SECRET_KEY,null);
editor.putString(PrefKeys.APP_SECRET_KEY,null);
editor.apply();
showToastMessage(getString(R.string.fingerprint_changed_externally));
}
else if(e instanceof FingerprintAuthenticationException)
{
showToastMessage(e.getMessage());
new Handler().postDelayed(TransactionBiometricPromptDialog.this::dismiss,200);
}
Log.d(SecurityUtils.TAG, "Failed : " + e.getMessage());
}
@Override
public void onComplete() {
}
}
public interface BiometricPromptResultListener
{
void onBiometricAuthSuccess(String decResult);
}
}

45
app/src/main/java/com/gmeremit/online/gmeremittance_native/transactionpasspromt/view/TransactionPasswordPromptDialog.java

@ -1,45 +0,0 @@
package com.gmeremit.online.gmeremittance_native.transactionpasspromt.view;
import android.app.Dialog;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import com.gmeremit.online.gmeremittance_native.R;
public class TransactionPasswordPromptDialog extends android.support.v4.app.DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
View view = getActivity().getLayoutInflater().inflate(R.layout.dialog_password_prompt_v2, null);
builder.setView(view);
initialize();
return builder.create();
}
private void initialize() {
}
@Override
public void onStart() {
super.onStart();
Window window = getDialog().getWindow();
if (window != null) {
window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
window.setBackgroundDrawableResource(R.drawable.ic_rounded_password_prompt);
}
}
}

52
app/src/main/res/layout/dialog_password_prompt_v2.xml

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="wrap_content">
<com.gmeremit.online.gmeremittance_native.customwidgets.GmeTextView
android:id="@+id/title"
android:layout_width="match_parent"
@ -9,23 +9,47 @@
android:gravity="center"
android:layout_marginTop="8dp"
android:padding="10dp"
android:text="@string/enter_login_password_text"
android:text="@string/fingerprint_auth_text"
android:textColor="@color/black"
android:textSize="20sp" />
<com.gmeremit.online.gmeremittance_native.utils.security.securitykeypad.SecurityKeyboardView
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
android:id="@+id/securityKeyboard"
android:layout_width="match_parent"
<ImageView
android:id="@+id/passwordPromptImageView"
android:layout_marginTop="25dp"
android:layout_marginBottom="15dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
/>
<com.gmeremit.online.gmeremittance_native.customwidgets.GmeErrorTextView
android:id="@+id/passwordErrorTxt"
android:paddingTop="2dp"
android:paddingBottom="5dp"
<com.gmeremit.online.gmeremittance_native.customwidgets.GmeTextView
android:id="@+id/orTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="13dp"
android:layout_marginRight="13dp"
/>
android:layout_marginTop="10dp"
android:layout_marginBottom="20dp"
android:layout_marginStart="15dp"
android:layout_marginEnd="15dp"
android:gravity="center"
android:text="@string/touch_fingerprint_text"
android:textColor="@color/darkgray"
android:textSize="14sp" />
<com.gmeremit.online.gmeremittance_native.customwidgets.GmeTextView
android:id="@+id/resend_request"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginStart="8dp"
android:layout_marginTop="10dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="10dp"
android:padding="10dp"
android:gravity="center"
android:text="@string/cancel_text"
android:textAllCaps="true"
android:textColor="@color/colorPrimary"
android:textSize="14sp"
android:visibility="visible" />
</LinearLayout>
Loading…
Cancel
Save