Browse Source

reset password dob added

new_design
Santosh Bhandary 3 years ago
parent
commit
91ad36689d
  1. 2
      app/src/main/java/com/swifttech/remit/jmecustomer/base/PrivilegedGateway.java
  2. 4
      app/src/main/java/com/swifttech/remit/jmecustomer/features/login/view/LoginV2Activity.java
  3. 8
      app/src/main/java/com/swifttech/remit/jmecustomer/features/registerv2/existingcustomer/presenter/ExistingCustomerRegistrationRequestLiveData.java
  4. 1
      app/src/main/java/com/swifttech/remit/jmecustomer/features/registerv2/existingcustomer/view/ExistingCustomerRegistrationRequestFragment.java
  5. 3
      app/src/main/java/com/swifttech/remit/jmecustomer/features/resetpassword/gateway/ResetPassV2Gateway.java
  6. 62
      app/src/main/java/com/swifttech/remit/jmecustomer/features/resetpassword/presenter/ResetPassV2Presenter.java
  7. 2
      app/src/main/java/com/swifttech/remit/jmecustomer/features/resetpassword/presenter/ResetPassV2PresenterInterface.java
  8. 20
      app/src/main/java/com/swifttech/remit/jmecustomer/features/resetpassword/presenter/ResetPassViewLiveData.java
  9. 61
      app/src/main/java/com/swifttech/remit/jmecustomer/features/resetpassword/view/ResetPassV2Activity.java
  10. 2
      app/src/main/java/com/swifttech/remit/jmecustomer/features/security/RemitAuthManagerGateway.java
  11. 41
      app/src/main/java/com/swifttech/remit/jmecustomer/features/settings/view/FingerSetUpPasswordFragment.java
  12. 57
      app/src/main/java/com/swifttech/remit/jmecustomer/features/settings/view/SettingsView.java
  13. 16
      app/src/main/res/drawable/ic_close_bottom_sheet.xml
  14. 18
      app/src/main/res/layout/activity_reset_pass_v2.xml
  15. 92
      app/src/main/res/layout/finger_setup_pass_layout_fragment.xml
  16. 1
      app/src/main/res/values-bn/strings.xml
  17. 1
      app/src/main/res/values-ja/strings.xml
  18. 1
      app/src/main/res/values-ne/strings.xml
  19. 1
      app/src/main/res/values-vi/strings.xml
  20. 1
      app/src/main/res/values/strings.xml

2
app/src/main/java/com/swifttech/remit/jmecustomer/base/PrivilegedGateway.java

@ -278,4 +278,6 @@ public abstract class PrivilegedGateway extends BaseGateway implements Privilege
RemitApplication.getStorage().edit().putBoolean(PrefKeys.FINGER_PRINT_LOGIN_ENABLED, !action).apply();
}
}

4
app/src/main/java/com/swifttech/remit/jmecustomer/features/login/view/LoginV2Activity.java

@ -52,6 +52,8 @@ import butterknife.ButterKnife;
import static androidx.biometric.BiometricManager.Authenticators.BIOMETRIC_STRONG;
import static androidx.biometric.BiometricManager.Authenticators.BIOMETRIC_WEAK;
import static androidx.biometric.BiometricManager.Authenticators.DEVICE_CREDENTIAL;
import static com.swifttech.remit.jmecustomer.utils.Constants.BIOMETRIC_ERROR_HW_UNAVAILABLE;
import static com.swifttech.remit.jmecustomer.utils.Constants.BIOMETRIC_ERROR_NO_HARDWARE;
import static com.swifttech.remit.jmecustomer.utils.Constants.LOGIN;
@ -110,7 +112,7 @@ public class LoginV2Activity extends BaseActivity implements View.OnClickListene
loginV2Gateway=new LoginV2Gateway();
//registerBiometric();
remitAuthManager = new RemitAuthManager1(LoginV2Activity.this);
if (loginV2Gateway.isFingerPrintLoginEnabled()) {
if (!loginV2Gateway.isFingerPrintLoginEnabled() || remitAuthManager.bioMetricCanAuthenticates().equals(BIOMETRIC_ERROR_NO_HARDWARE) || remitAuthManager.bioMetricCanAuthenticates().equals(BIOMETRIC_ERROR_HW_UNAVAILABLE)) {
fingerprintScannerTxtView.setVisibility(View.GONE);
}
}

8
app/src/main/java/com/swifttech/remit/jmecustomer/features/registerv2/existingcustomer/presenter/ExistingCustomerRegistrationRequestLiveData.java

@ -61,12 +61,12 @@ public class ExistingCustomerRegistrationRequestLiveData {
{
private Observable<CharSequence> idNumberInputObservable;
private Observable<CharSequence> mobileNoInputObservable;
private Observable<CharSequence> dobInputLiveData;
private Observable<CharSequence> dobInputObservable;
public ExistingCustomerRegistrationRequestViewBinding(Observable<CharSequence> idNumberInputObservable, Observable<CharSequence> mobileNoInputObservable, Observable<CharSequence> dobInputLiveData) {
public ExistingCustomerRegistrationRequestViewBinding(Observable<CharSequence> idNumberInputObservable, Observable<CharSequence> mobileNoInputObservable, Observable<CharSequence> dobInputObservable) {
this.idNumberInputObservable = idNumberInputObservable;
this.mobileNoInputObservable = mobileNoInputObservable;
this.dobInputLiveData = dobInputLiveData;
this.dobInputObservable = dobInputObservable;
}
public Observable<CharSequence> getIdNumberInputObservable() {
@ -74,7 +74,7 @@ public class ExistingCustomerRegistrationRequestLiveData {
}
public Observable<CharSequence> getDobInputLiveData() {
return dobInputLiveData;
return dobInputObservable;
}

1
app/src/main/java/com/swifttech/remit/jmecustomer/features/registerv2/existingcustomer/view/ExistingCustomerRegistrationRequestFragment.java

@ -82,7 +82,6 @@ public class ExistingCustomerRegistrationRequestFragment extends BaseFragment {
viewModel = new ViewModelProvider(requireActivity()).get(ExistingCustomerRegisterViewModel.class);
}
private void performDefaultAction(Bundle savedInstanceState) {
existingCustomerRegistrationRequestLiveData = viewModel.getExsitingCustomerRegisterationRequestViewEvents(

3
app/src/main/java/com/swifttech/remit/jmecustomer/features/resetpassword/gateway/ResetPassV2Gateway.java

@ -15,8 +15,7 @@ public class ResetPassV2Gateway extends PrivilegedGateway implements ResetPassV2
public Observable<ResetApiResponse> resetPassV2(String auth, String userId, String dob) {
JsonObject jsonObject=new JsonObject();
jsonObject.addProperty("username",userId);
jsonObject.addProperty("dob",dob);
jsonObject.addProperty("Dob",dob);
return HttpClientV2.getInstance().resetPassV2(auth,jsonObject);
}
}

62
app/src/main/java/com/swifttech/remit/jmecustomer/features/resetpassword/presenter/ResetPassV2Presenter.java

@ -10,6 +10,7 @@ import com.swifttech.remit.jmecustomer.features.resetpassword.model.ResetApiResp
import com.swifttech.remit.jmecustomer.utils.Constants;
import com.swifttech.remit.jmecustomer.utils.https.GenericApiObserverResponse;
import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.observers.DisposableObserver;
@ -40,20 +41,18 @@ public class ResetPassV2Presenter extends BaseViewModel implements ResetPassV2Pr
RemitApplication.AppRelatedMetaData appRelatedMetaData= RemitApplication.getAppRelatedMetaData(view.getContext());
useCaseCompositeDisposable.add(
gateway.resetPassV2(gateway.getBasicAuth(view.getContext()),resetPassValidator.userId,"")
gateway.resetPassV2(gateway.getBasicAuth(view.getContext()),resetPassValidator.userId,resetPassValidator.dob)
.doOnSubscribe(d->view.showProgressBar(true,getStringfromStringId(R.string.processing_request_text)))
.doFinally(()->view.showProgressBar(false,""))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeWith(new ResetPassObserver())
);
}
@Override
public boolean isUserIdValid(String userId) {
if(resetPassValidator.isUserIdValid(userId)){
public boolean isResetFormValid(String userId,String dob) {
if(resetPassValidator.isUserIdValid(userId) && resetPassValidator.isvalidDob(dob)){
return true;
}
return false;
@ -67,25 +66,27 @@ public class ResetPassV2Presenter extends BaseViewModel implements ResetPassV2Pr
private void bindView(ResetPassViewLiveData.ResetPassViewBindings viewBindings) {
this.viewEventCompositeDisposable.add(
viewBindings.getUserIdTextObservable().map(this.resetPassValidator::isUserIdValid)
.subscribeWith(new DisposableObserver<Boolean>() {
@Override
public void onNext(Boolean aBoolean) {
resetPassViewLiveData.setAllFormValidLiveData(new FormInputStateDTO(false, view.getContext().getString(R.string.invalidUserId_text)));
}
@Override
public void onError(Throwable e) {
resetPassViewLiveData.setAllFormValidLiveData(new FormInputStateDTO(false, view.getContext().getString(R.string.invalidUserId_text)));
}
@Override
public void onComplete() {
}
})
);
Observable.combineLatest(
viewBindings.getUserIdTextObservable().map(this.resetPassValidator::isUserIdValid),
viewBindings.getDobInputObservable().map(resetPassValidator::isvalidDob),
(isUserIdValid, isDobValid) -> isUserIdValid && isDobValid && isDobValid)
.subscribeWith(new DisposableObserver<Boolean>() {
@Override
public void onNext(Boolean result) {
resetPassViewLiveData.setAllFormValidLiveData(new FormInputStateDTO(result, ""));
}
@Override
public void onError(Throwable e) {
resetPassViewLiveData.setAllFormValidLiveData(new FormInputStateDTO(false, ""));
}
@Override
public void onComplete() {
}
}) );
}
@ -110,6 +111,7 @@ public class ResetPassV2Presenter extends BaseViewModel implements ResetPassV2Pr
public class ResetPassValidator
{
private String userId;
private String dob;
public boolean isUserIdValid(CharSequence userID)
@ -130,6 +132,18 @@ public class ResetPassV2Presenter extends BaseViewModel implements ResetPassV2Pr
}
public boolean isvalidDob(CharSequence dob) {
if (dob == null || dob.length() < 1) {
resetPassViewLiveData.setDobInputLiveData(new FormInputStateDTO<>(false, getStringfromStringId(R.string.empty_field_error_text)));
this.dob = null;
return false;
} else {
resetPassViewLiveData.setDobInputLiveData(new FormInputStateDTO<>(true, ""));
this.dob = dob.toString();
return true;
}
}
}
public class ResetPassObserver extends GenericApiObserverResponse<ResetApiResponse>

2
app/src/main/java/com/swifttech/remit/jmecustomer/features/resetpassword/presenter/ResetPassV2PresenterInterface.java

@ -8,7 +8,7 @@ public interface ResetPassV2PresenterInterface extends BasePresenterInterface {
void resetPassword();
boolean isUserIdValid(String userId);
boolean isResetFormValid(String userId,String dob);
ResetPassViewLiveData getResetPassViewEvents(ResetPassViewLiveData.ResetPassViewBindings viewBindings);

20
app/src/main/java/com/swifttech/remit/jmecustomer/features/resetpassword/presenter/ResetPassViewLiveData.java

@ -10,13 +10,14 @@ import io.reactivex.Observable;
public class ResetPassViewLiveData {
private MutableLiveData<FormInputStateDTO<String>> userIdInputLiveData;
private MutableLiveData<FormInputStateDTO<String>> dobInputLiveData;
private MutableLiveData<FormInputStateDTO> allFormValidLiveData;
public ResetPassViewLiveData() {
userIdInputLiveData=new MutableLiveData<>();
dobInputLiveData =new MutableLiveData<>();
allFormValidLiveData=new MutableLiveData<>();
}
@ -36,19 +37,34 @@ public class ResetPassViewLiveData {
this.userIdInputLiveData.setValue(userIdInputLiveData);
}
public LiveData<FormInputStateDTO<String>> getDobInputLiveData() {
return dobInputLiveData;
}
public void setDobInputLiveData(FormInputStateDTO<String> passwordInputLiveData) {
this.dobInputLiveData.setValue( passwordInputLiveData);
}
public static class ResetPassViewBindings
{
private Observable<CharSequence> userIdTextObservable;
private Observable<CharSequence> passwordInputLiveData;
private Observable<CharSequence> dobInputObservable;
public ResetPassViewBindings(Observable<CharSequence> userIdTextObservable) {
public ResetPassViewBindings(Observable<CharSequence> userIdTextObservable,Observable<CharSequence> dobInputObservable) {
this.userIdTextObservable = userIdTextObservable;
this.dobInputObservable=dobInputObservable;
}
public Observable<CharSequence> getUserIdTextObservable() {
return userIdTextObservable;
}
public Observable<CharSequence> getDobInputObservable() {
return dobInputObservable;
}
}
}

61
app/src/main/java/com/swifttech/remit/jmecustomer/features/resetpassword/view/ResetPassV2Activity.java

@ -4,6 +4,7 @@ import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import androidx.appcompat.widget.AppCompatAutoCompleteTextView;
import androidx.lifecycle.ViewModelProvider;
import com.swifttech.remit.jmecustomer.R;
@ -15,10 +16,17 @@ import com.swifttech.remit.jmecustomer.features.resetpassword.presenter.ResetPas
import com.swifttech.remit.jmecustomer.features.resetpassword.presenter.ResetPassViewLiveData;
import com.google.android.material.textfield.TextInputLayout;
import com.jakewharton.rxbinding3.widget.RxTextView;
import com.swifttech.remit.jmecustomer.utils.Utils;
import com.tsongkha.spinnerdatepicker.SpinnerDatePickerDialogBuilder;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Locale;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import io.reactivex.subjects.PublishSubject;
public class ResetPassV2Activity extends BaseActivity implements ResetPassV2PresenterInterface.ResetPassV2ContractInterface {
@ -34,9 +42,16 @@ public class ResetPassV2Activity extends BaseActivity implements ResetPassV2Pres
@BindView(R.id.iv_back)
View iv_back;
@BindView(R.id.dob_edTxt)
AppCompatAutoCompleteTextView dob_edTxt;
@BindView(R.id.dob_TxtInputLayout)
TextInputLayout dob_TxtInputLayout;
private ResetPassV2PresenterInterface presenterInterface;
private ResetPassViewLiveData resetPassLiveData;
private PublishSubject<CharSequence> dobSelectionSubject;
@Override
@ -51,10 +66,11 @@ public class ResetPassV2Activity extends BaseActivity implements ResetPassV2Pres
private void initialize() {
iv_back.setVisibility(View.VISIBLE);
presenterInterface = new ViewModelProvider(this, new ResetPassViewModelFactory(this)).get(ResetPassV2Presenter.class);
resetPassLiveData = presenterInterface.getResetPassViewEvents(new ResetPassViewLiveData.ResetPassViewBindings(RxTextView.textChanges(emailIdEdTxt).skipInitialValue()));
dobSelectionSubject = PublishSubject.create();
resetPassLiveData = presenterInterface.getResetPassViewEvents(new ResetPassViewLiveData.ResetPassViewBindings(RxTextView.textChanges(emailIdEdTxt).skipInitialValue(),dobSelectionSubject));
resetPassLiveData.getUserIdInputLiveData().observe(this, this::onUserIdDataRecieved);
resetPassLiveData.getDobInputLiveData().observe(this, this::onDOBStateChanged);
resetPassLiveData.getAllFormValidLiveData().observe(this, result-> {
// btn_submit.setEnabled(result.isValid());
});
@ -82,9 +98,48 @@ public class ResetPassV2Activity extends BaseActivity implements ResetPassV2Pres
@OnClick(R.id.btn_submit)
public void onSubmitBtnClicked() {
if(presenterInterface.isUserIdValid(emailIdEdTxt.getText().toString().trim())){
if(presenterInterface.isResetFormValid(emailIdEdTxt.getText().toString().trim(),dob_edTxt.getText().toString().trim())){
presenterInterface.resetPassword();
}
}
private void onDOBStateChanged(FormInputStateDTO<String> state) {
if (state.isValid()) {
dob_TxtInputLayout.setError(null);
if (state.hasData()) {
dob_edTxt.setText(state.getData());
dobSelectionSubject.onNext(state.getData());
}
} else
dob_TxtInputLayout.setError(state.getErrorMessage());
}
@OnClick(R.id.dob_edTxt)
public void promptDatePickerForDOB() {
hideKeyBoard();
SpinnerDatePickerDialogBuilder builder = new SpinnerDatePickerDialogBuilder();
builder.context(this)
.spinnerTheme(R.style.NumberPickerStyle)
.showTitle(true)
.showDaySpinner(true)
.dialogTheme(R.style.DatePickerTheme)
.setTitle(getString(R.string.select_dob_text))
.setPositiveButtonText(getString(R.string.ok_text))
.setNegativeButtonText(getString(R.string.cancel_text))
.setCurrentDateAsMaxDate()
.defaultDate(1990, 1, 1)
.callback(new com.tsongkha.spinnerdatepicker.DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(com.tsongkha.spinnerdatepicker.DatePicker datePicker, int year, int monthOfYear, int dayOfMonth) {
Calendar newDate = Calendar.getInstance();
newDate.set(year, monthOfYear, dayOfMonth);
String date = new SimpleDateFormat(Utils.getDefaultDateFormat(), Locale.US).format(newDate.getTime());
dob_edTxt.setText(date);
dobSelectionSubject.onNext(date);
}
})
.build().show();
}

2
app/src/main/java/com/swifttech/remit/jmecustomer/features/security/RemitAuthManagerGateway.java

@ -6,7 +6,7 @@ import com.swifttech.remit.jmecustomer.RemitApplication;
import com.swifttech.remit.jmecustomer.base.PrefKeys;
import com.swifttech.remit.jmecustomer.base.PrivilegedGateway;
class RemitAuthManagerGateway extends PrivilegedGateway {
public class RemitAuthManagerGateway extends PrivilegedGateway {
public boolean isBiometricDataAvailable() {
SharedPreferences sp = RemitApplication.getStorage();

41
app/src/main/java/com/swifttech/remit/jmecustomer/features/settings/view/FingerSetUpPasswordFragment.java

@ -0,0 +1,41 @@
package com.swifttech.remit.jmecustomer.features.settings.view;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
import com.swifttech.remit.jmecustomer.R;
public class FingerSetUpPasswordFragment extends BottomSheetDialogFragment
implements View.OnClickListener {
public static final String TAG = "SetUpPasswordFragment";
public static FingerSetUpPasswordFragment newInstance() {
return new FingerSetUpPasswordFragment();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.finger_setup_pass_layout_fragment, container, false);
}
@Override public void onViewCreated( View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
}
@Override
public void onDetach() {
super.onDetach();
}
@Override public void onClick(View view) {
}
}

57
app/src/main/java/com/swifttech/remit/jmecustomer/features/settings/view/SettingsView.java

@ -2,24 +2,21 @@ package com.swifttech.remit.jmecustomer.features.settings.view;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.CompoundButton;
import androidx.annotation.Nullable;
import androidx.appcompat.widget.SwitchCompat;
import android.view.View;
import android.widget.CompoundButton;
import com.swifttech.remit.jmecustomer.RemitApplication;
import com.swifttech.remit.jmecustomer.R;
import com.swifttech.remit.jmecustomer.base.BaseActivity;
import com.swifttech.remit.jmecustomer.features.changepassword.view.UserPasswordChangeV2Activity;
import com.swifttech.remit.jmecustomer.common.customwidgets.CustomAlertDialog;
import com.swifttech.remit.jmecustomer.features.changetxnpin.view.ChangeTxnPinActivity;
import com.swifttech.remit.jmecustomer.features.security.RemitAuthManager;
import com.swifttech.remit.jmecustomer.features.security.RemitAuthManager1;
import com.swifttech.remit.jmecustomer.features.security.model.RemitAuthFailedResult;
import com.swifttech.remit.jmecustomer.features.security.model.RemitAuthSuccessResult;
import com.swifttech.remit.jmecustomer.features.security.RemitAuthManagerGateway;
import com.swifttech.remit.jmecustomer.features.settings.adapter.LanguageSelectionDialogRVAdapter;
import com.swifttech.remit.jmecustomer.features.settings.gateway.LanguageSelectionGateway;
import com.swifttech.remit.jmecustomer.features.settings.gateway.LanguageSelectionGatewayInterface;
import com.swifttech.remit.jmecustomer.features.splashscreen.model.LanguageModel;
@ -46,38 +43,40 @@ public class SettingsView extends BaseActivity implements CompoundButton.OnCheck
Disposable fingerPrintAuthEnableSubs;
LanguageSelectionGatewayInterface languageSelectionGatewayInterface;
private RemitAuthManager remitAuthManager;
private RemitAuthManager1 remitAuthManager1;
private RemitAuthManagerGateway remitAuthManagerGateway;
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
remitAuthManagerGateway = new RemitAuthManagerGateway();
init();
}
private void init() {
ButterKnife.bind(this);
remitAuthManager = RemitAuthManager.getGmeAuthManager(this);
remitAuthManager1=new RemitAuthManager1(this);
if(remitAuthManager1.bioMetricCanAuthenticates().equals(BIOMETRIC_ERROR_NO_HARDWARE) || remitAuthManager1.bioMetricCanAuthenticates().equals(BIOMETRIC_ERROR_HW_UNAVAILABLE)){
remitAuthManager1 = new RemitAuthManager1(this);
if (remitAuthManager1.bioMetricCanAuthenticates().equals(BIOMETRIC_ERROR_NO_HARDWARE) || remitAuthManager1.bioMetricCanAuthenticates().equals(BIOMETRIC_ERROR_HW_UNAVAILABLE)) {
view_fingerprint.setVisibility(View.GONE);
view_fingerprint_divider.setVisibility(View.GONE);
}else{
} else {
view_fingerprint.setChecked(remitAuthManagerGateway.isFingerPrintLoginEnabled());
}
languageSelectionGatewayInterface=new LanguageSelectionGateway();
/* languageSelectionGatewayInterface=new LanguageSelectionGateway();
if (!remitAuthManager.isBiometricSupportedByDevice()) {
view_fingerprint.setVisibility(View.GONE);
view_fingerprint_divider.setVisibility(View.GONE);
} else {
view_fingerprint.setChecked(remitAuthManager.isBiometricEnabledOnTheApp());
}
}*/
}
@OnClick({R.id.view_change_password, R.id.iv_back, R.id.view_language, R.id.view_fingerprint,R.id.view_change_pin})
@OnClick({R.id.view_change_password, R.id.iv_back, R.id.view_language, R.id.view_fingerprint, R.id.view_change_pin})
public void onClick(View view) {
switch (view.getId()) {
@ -97,7 +96,6 @@ public class SettingsView extends BaseActivity implements CompoundButton.OnCheck
startActivity(new Intent(this, ChangeTxnPinActivity.class));
break;
}
}
@ -150,11 +148,25 @@ public class SettingsView extends BaseActivity implements CompoundButton.OnCheck
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
switch (buttonView.getId()) {
case R.id.view_fingerprint: {
view_fingerprint.setOnCheckedChangeListener(null);
if (isChecked) {
if (!remitAuthManagerGateway.isFingerPrintLoginEnabled()) {
view_fingerprint.setChecked(false);
popUpPasswordBottomSheet();
}
} else {
view_fingerprint.setChecked(isChecked);
remitAuthManagerGateway.turnOffFingerPrintLogin(!isChecked);
}
/*
view_fingerprint.setOnCheckedChangeListener(null);
view_fingerprint.setChecked(!isChecked);
view_fingerprint.setOnCheckedChangeListener(this);
if (remitAuthManager.isBiometricDataAvailable()) {
remitAuthManager.requestBiometricAuth().setListener(new RemitAuthManager.RemitAuthListener() {
@ -184,9 +196,16 @@ public class SettingsView extends BaseActivity implements CompoundButton.OnCheck
RemitApplication.getStorage().edit().clear().apply();
logout();
});
}
}*/
}
}
}
private void popUpPasswordBottomSheet() {
FingerSetUpPasswordFragment addPhotoBottomDialogFragment =
FingerSetUpPasswordFragment.newInstance();
addPhotoBottomDialogFragment.show(getSupportFragmentManager(),
FingerSetUpPasswordFragment.TAG);
}
}

16
app/src/main/res/drawable/ic_close_bottom_sheet.xml

@ -0,0 +1,16 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="40dp"
android:height="40dp"
android:viewportWidth="40"
android:viewportHeight="40">
<path
android:pathData="M6,0L34,0A6,6 0,0 1,40 6L40,34A6,6 0,0 1,34 40L6,40A6,6 0,0 1,0 34L0,6A6,6 0,0 1,6 0z"
android:fillColor="#ffffff"/>
<path
android:pathData="M14,26L26,14M14,14L26,26"
android:strokeLineJoin="round"
android:strokeWidth="2"
android:fillColor="#00000000"
android:strokeColor="#9299A1"
android:strokeLineCap="round"/>
</vector>

18
app/src/main/res/layout/activity_reset_pass_v2.xml

@ -49,7 +49,23 @@
</com.swifttech.remit.jmecustomer.common.view.MTextInputLayout>
<com.swifttech.remit.jmecustomer.common.view.MTextInputLayout
android:id="@+id/dob_TxtInputLayout"
android:hint="@string/dob_text"
style="@style/MTextInputLayoutFormDropDown"
app:endIconMode="dropdown_menu"
app:errorEnabled="true"
app:endIconDrawable="@drawable/icv_dropdown"
app:startIconDrawable="@drawable/ic_calendar"
app:errorTextAppearance="@style/MTextInpuLayoutErrorStyle"
>
<com.swifttech.remit.jmecustomer.common.view.MAutoCompleteTextView
android:id="@+id/dob_edTxt"
style="@style/MAutoCompleteDropDown"
android:inputType="textNoSuggestions"
android:imeOptions="actionDone"
/>
</com.swifttech.remit.jmecustomer.common.view.MTextInputLayout>
<com.swifttech.remit.jmecustomer.common.customwidgets.GmeButton

92
app/src/main/res/layout/finger_setup_pass_layout_fragment.xml

@ -0,0 +1,92 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/_16sdp"
android:paddingRight="@dimen/_16sdp"
android:paddingBottom="@dimen/_16sdp">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/img_top_dash_line"
android:layout_width="@dimen/_30sdp"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/_8sdp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
/>
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/cancel_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/img_top_dash_line"
app:srcCompat="@drawable/ic_close_bottom_sheet" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/text_view_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:text="@string/confirm_password_text"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/cancel_button"
tools:layout_editor_absoluteY="54dp" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/tv_description"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/_12sdp"
android:text="@string/enter_your_password_to_setup_fingerprint"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/text_view_title" />
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/input_layout_verify_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/_30sdp"
android:hint="@string/confirm_password_text"
android:importantForAutofill="noExcludeDescendants"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_description"
app:passwordToggleEnabled="true">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/et_verify_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:focusable="true"
android:imeOptions="actionDone"
android:inputType="textPassword"
android:textSize="@dimen/_13sdp"
android:maxLength="15">
</com.google.android.material.textfield.TextInputEditText>
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.button.MaterialButton
android:id="@+id/btnChangePassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/_20sdp"
android:text="@string/continue_text"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/input_layout_verify_password"
app:layout_constraintVertical_bias="0.0" />
</androidx.constraintlayout.widget.ConstraintLayout>

1
app/src/main/res/values-bn/strings.xml

@ -550,4 +550,5 @@
<string name="label_use_pin">Use PIN</string>
<string name="biometric_prompt_description">Please put your finger on your fingerprint sensor in order to validate</string>
<string name="prompt_info_dismiss">Dismiss</string>
<string name="enter_your_password_to_setup_fingerprint">Enter your password to setup fingerprint</string>
</resources>

1
app/src/main/res/values-ja/strings.xml

@ -550,5 +550,6 @@
<string name="label_use_pin">Use PIN</string>
<string name="biometric_prompt_description">Please put your finger on your fingerprint sensor in order to validate</string>
<string name="prompt_info_dismiss">Dismiss</string>
<string name="enter_your_password_to_setup_fingerprint">Enter your password to setup fingerprint</string>
</resources>

1
app/src/main/res/values-ne/strings.xml

@ -549,4 +549,5 @@
<string name="label_use_pin">Use PIN</string>
<string name="biometric_prompt_description">Please put your finger on your fingerprint sensor in order to validate</string>
<string name="prompt_info_dismiss">Dismiss</string>
<string name="enter_your_password_to_setup_fingerprint">Enter your password to setup fingerprint</string>
</resources>

1
app/src/main/res/values-vi/strings.xml

@ -546,5 +546,6 @@
<string name="label_use_pin">Use PIN</string>
<string name="biometric_prompt_description">Please put your finger on your fingerprint sensor in order to validate</string>
<string name="prompt_info_dismiss">Dismiss</string>
<string name="enter_your_password_to_setup_fingerprint">Enter your password to setup fingerprint</string>
</resources>

1
app/src/main/res/values/strings.xml

@ -574,5 +574,6 @@
<string name="label_use_pin">Use PIN</string>
<string name="biometric_prompt_description">Please put your finger on your fingerprint sensor in order to validate</string>
<string name="prompt_info_dismiss">Dismiss</string>
<string name="enter_your_password_to_setup_fingerprint">Enter your password to setup fingerprint</string>
</resources>
Loading…
Cancel
Save