|
|
@ -1,23 +1,26 @@ |
|
|
|
package com.gmeremit.online.gmeremittance_native.registerV2.presenter; |
|
|
|
|
|
|
|
import android.util.Log; |
|
|
|
|
|
|
|
import com.gmeremit.online.gmeremittance_native.GmeApplication; |
|
|
|
import com.gmeremit.online.gmeremittance_native.R; |
|
|
|
import com.gmeremit.online.gmeremittance_native.base.BasePresenter; |
|
|
|
import com.gmeremit.online.gmeremittance_native.customwidgets.CustomAlertDialog; |
|
|
|
import com.gmeremit.online.gmeremittance_native.kycV2.model.kyc.NativeCountry; |
|
|
|
import com.gmeremit.online.gmeremittance_native.loginV2.model.LoginModelV2; |
|
|
|
import com.gmeremit.online.gmeremittance_native.loginV2.view.LoginV2Activity; |
|
|
|
import com.gmeremit.online.gmeremittance_native.registerV2.gateway.RegisterV2Gateway; |
|
|
|
import com.gmeremit.online.gmeremittance_native.registerV2.model.RegisterApiResponse; |
|
|
|
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 com.google.firebase.iid.FirebaseInstanceId; |
|
|
|
|
|
|
|
import java.util.List; |
|
|
|
|
|
|
|
import io.reactivex.Observable; |
|
|
|
import io.reactivex.android.schedulers.AndroidSchedulers; |
|
|
|
import io.reactivex.disposables.CompositeDisposable; |
|
|
|
import io.reactivex.observers.DisposableObserver; |
|
|
|
import io.reactivex.schedulers.Schedulers; |
|
|
|
|
|
|
|
public class RegisterV2Presenter extends BasePresenter implements RegisterV2PresenterInterface, RegisterV2InteractorInterface { |
|
|
@ -55,7 +58,6 @@ public class RegisterV2Presenter extends BasePresenter implements RegisterV2Pres |
|
|
|
|
|
|
|
@Override |
|
|
|
public void registerUser() { |
|
|
|
|
|
|
|
GmeApplication.AppRelatedMetaData appRelatedMetaData = GmeApplication.getAppRelatedMetaData(view.getContext()); |
|
|
|
|
|
|
|
String auth = "Basic " + Utils.toBase64("172017F9EC11222E8107142733:QRK2UM0Q:" + appRelatedMetaData.getDeviceId()); |
|
|
@ -91,8 +93,6 @@ public class RegisterV2Presenter extends BasePresenter implements RegisterV2Pres |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
public void updateSelectedNativeCountry(NativeCountry seletedNativeCountry) { |
|
|
|
this.selectedNativeCountry = seletedNativeCountry; |
|
|
@ -111,11 +111,11 @@ public class RegisterV2Presenter extends BasePresenter implements RegisterV2Pres |
|
|
|
public void updateMobileNumber(String mobileNumber) { |
|
|
|
if (!checkStringNotEmpty(mobileNumber)) { |
|
|
|
isSelectedMobileNoValid = false; |
|
|
|
selectedMobileNumber=""; |
|
|
|
selectedMobileNumber = ""; |
|
|
|
view.setMobileError(getStringfromStringId(R.string.kyc_mobile_empty_error)); |
|
|
|
|
|
|
|
} else if (mobileNumber.length() < 9 || mobileNumber.length() > 12) { |
|
|
|
selectedMobileNumber=""; |
|
|
|
selectedMobileNumber = ""; |
|
|
|
isSelectedMobileNoValid = false; |
|
|
|
view.setMobileError(getStringfromStringId(R.string.kyc_mobile_invalid_number_error)); |
|
|
|
} else { |
|
|
@ -132,6 +132,23 @@ public class RegisterV2Presenter extends BasePresenter implements RegisterV2Pres |
|
|
|
return nativeCountryList; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void performLoginInternally() { |
|
|
|
String auth = "Basic " + Utils.toBase64("172017F9EC11222E8107142733:QRK2UM0Q:" + GmeApplication.getAppRelatedMetaData(view.getContext()).getDeviceId()); |
|
|
|
this.gateway.loginUser(auth, selectedUserId, enteredEncPassword) |
|
|
|
.subscribeOn(Schedulers.io()) |
|
|
|
.flatMap(loginResponse -> { |
|
|
|
if (loginResponse.getErrorCode().equalsIgnoreCase(Constants.SUCCESS_CODE_V2)) { |
|
|
|
LoginModelV2 data = loginResponse.getData(); |
|
|
|
return gateway.saveUserInfo(data); |
|
|
|
} else { |
|
|
|
return Observable.error(new Exception(loginResponse.getMsg())); |
|
|
|
} |
|
|
|
}) |
|
|
|
.observeOn(AndroidSchedulers.mainThread()) |
|
|
|
.subscribe(new LoginObserver(selectedUserId, enteredEncPassword)); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void updateId(String id) { |
|
|
|
selectedUserId = id; |
|
|
@ -141,7 +158,7 @@ public class RegisterV2Presenter extends BasePresenter implements RegisterV2Pres |
|
|
|
|
|
|
|
} else if (id.length() < 6) { |
|
|
|
isSelectedUserIdValid = false; |
|
|
|
view.setUserIdError(getStringfromStringId(R.string.userid_error_text )); |
|
|
|
view.setUserIdError(getStringfromStringId(R.string.userid_error_text)); |
|
|
|
} else { |
|
|
|
isSelectedUserIdValid = true; |
|
|
|
view.setUserIdError(null); |
|
|
@ -152,21 +169,15 @@ public class RegisterV2Presenter extends BasePresenter implements RegisterV2Pres |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void updatePassword(String encUpdatedPassword,int lengthValue) { |
|
|
|
if(lengthValue>=6) |
|
|
|
{ |
|
|
|
public void updatePassword(String encUpdatedPassword, int lengthValue) { |
|
|
|
if (lengthValue >= 6) { |
|
|
|
this.enteredEncPassword = encUpdatedPassword; |
|
|
|
isEnteredPasswordValid=true; |
|
|
|
isEnteredPasswordValid = true; |
|
|
|
view.setPasswordError(null); |
|
|
|
|
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
this.enteredEncPassword=""; |
|
|
|
isEnteredPasswordValid=false; |
|
|
|
} else { |
|
|
|
this.enteredEncPassword = ""; |
|
|
|
isEnteredPasswordValid = false; |
|
|
|
view.setPasswordError(getStringfromStringId(R.string.password_policy_text)); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
@ -183,15 +194,29 @@ public class RegisterV2Presenter extends BasePresenter implements RegisterV2Pres |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private void persistUserCredentialForFingerprintAuth(String userId, String pwd, LoginModelV2 loginModelV2) { |
|
|
|
SecurityUtils.generateKey() |
|
|
|
.flatMap(key -> Observable.zip(Observable.just(userId), |
|
|
|
SecurityUtils.encryptUsingAES(pwd, key).subscribeOn(Schedulers.io()), |
|
|
|
encryptByKeyStore(key).subscribeOn(Schedulers.io()), |
|
|
|
FingerprintEncResult::new) |
|
|
|
).observeOn(AndroidSchedulers.mainThread()) |
|
|
|
.subscribe(new FingerprintEncResultObserver(loginModelV2)); |
|
|
|
} |
|
|
|
|
|
|
|
private Observable<String> encryptByKeyStore(String data) { |
|
|
|
return SecurityUtils.encryptUsingKeyStore(view.getContext(), data) |
|
|
|
.flatMap(encKey -> Observable.just(encKey.getEncrypted())); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public class RegistrationObserver extends GenericApiObserverResponse<RegisterApiResponse> { |
|
|
|
|
|
|
|
@Override |
|
|
|
protected void onSuccess(RegisterApiResponse responseBody) { |
|
|
|
if (responseBody.getErrorCode().equalsIgnoreCase(Constants.SUCCESS_CODE_V2)) |
|
|
|
view.showPopUpMessage(responseBody.getMsg(), CustomAlertDialog.AlertType.SUCCESS, alertType -> { |
|
|
|
// gateway.updateUserId(userId); |
|
|
|
// view.redirectToDashboard(); |
|
|
|
view.redirectToLogin(); |
|
|
|
view.redirectToKYC(null, LoginV2Activity.KYC_REQUEST_FROM_LOGIN_SCREEN_CODE_LATER_PROCEED_TO_PENNY_TEST); |
|
|
|
}); |
|
|
|
else |
|
|
|
view.showPopUpMessage(responseBody.getMsg(), CustomAlertDialog.AlertType.FAILED, null); |
|
|
@ -214,4 +239,103 @@ public class RegisterV2Presenter extends BasePresenter implements RegisterV2Pres |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public class LoginObserver extends GenericApiObserverResponse<LoginModelV2> { |
|
|
|
String userId; |
|
|
|
String encUserPassword; |
|
|
|
|
|
|
|
public LoginObserver(String userId, String encUserPassword) { |
|
|
|
this.userId = userId; |
|
|
|
this.encUserPassword = encUserPassword; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
protected void onSuccess(LoginModelV2 loginResponse) { |
|
|
|
if (SecurityUtils.checkFingerPrintUsablity(view.getContext())) |
|
|
|
persistUserCredentialForFingerprintAuth(userId, encUserPassword, loginResponse); |
|
|
|
else |
|
|
|
view.redirectToDashboard(); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void onFailed(String message) { |
|
|
|
gateway.clearAllUserData(); |
|
|
|
view.redirectToSplash(); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
protected void onConnectionNotEstablished(String message) { |
|
|
|
gateway.clearAllUserData(); |
|
|
|
view.redirectToSplash(); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
protected void unauthorizedAccess(String message) { |
|
|
|
gateway.clearAllUserData(); |
|
|
|
view.redirectToSplash(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public class FingerprintEncResult { |
|
|
|
String userId; |
|
|
|
String encPwd; |
|
|
|
String encKey; |
|
|
|
|
|
|
|
public FingerprintEncResult(String userId, String encPwd, String encKey) { |
|
|
|
this.userId = userId; |
|
|
|
this.encPwd = encPwd; |
|
|
|
this.encKey = encKey; |
|
|
|
} |
|
|
|
|
|
|
|
public String getUserId() { |
|
|
|
return userId; |
|
|
|
} |
|
|
|
|
|
|
|
public String getEncPwd() { |
|
|
|
return encPwd; |
|
|
|
} |
|
|
|
|
|
|
|
public String getEncKey() { |
|
|
|
return encKey; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public String toString() { |
|
|
|
return "FingerprintEncResult{" + |
|
|
|
"userId='" + userId + '\'' + |
|
|
|
", encPwd='" + encPwd + '\'' + |
|
|
|
", encKey='" + encKey + '\'' + |
|
|
|
'}'; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public class FingerprintEncResultObserver extends DisposableObserver<FingerprintEncResult> { |
|
|
|
|
|
|
|
LoginModelV2 loginModelV2; |
|
|
|
|
|
|
|
public FingerprintEncResultObserver(LoginModelV2 loginModelV2) { |
|
|
|
this.loginModelV2 = loginModelV2; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void onNext(FingerprintEncResult fingerprintEncResult) { |
|
|
|
gateway.persistSecretKey(fingerprintEncResult.getEncKey()); |
|
|
|
gateway.persistUserPwd(fingerprintEncResult.getEncPwd()); |
|
|
|
gateway.persistUserId(fingerprintEncResult.getUserId()); |
|
|
|
view.redirectToDashboard(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void onError(Throwable e) { |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void onComplete() { |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |