@ -37,7 +37,9 @@ import java.util.concurrent.TimeUnit;
import io.reactivex.Observable ;
import io.reactivex.android.schedulers.AndroidSchedulers ;
import io.reactivex.annotations.NonNull ;
import io.reactivex.disposables.CompositeDisposable ;
import io.reactivex.functions.Function4 ;
import io.reactivex.observers.DisposableObserver ;
import io.reactivex.schedulers.Schedulers ;
import io.reactivex.subjects.PublishSubject ;
@ -62,7 +64,8 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter
private PublishSubject < Boolean > form1ValidationSubject ;
private PublishSubject < Boolean > form2ValidationSubject ;
private CustomerDetailViewLiveData . CustomerDetailViewBinding viewBindings ;
private Boolean isBackAdditionalRequired ;
private Boolean isBackAdditionalRequired = true ;
public KYCV3ViewModel ( KYCV3ViewContractInterface view , KYCV3GatewayInterface gatewayInterface , FileDownloadGateway fileDownloadGateway , LoginV2InteractorInterface . Login2GatewayInterface loginGateway , String userId , String userPwd ) {
this . compositeDisposable = new CompositeDisposable ( ) ;
@ -158,20 +161,20 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter
}
@Override
public KYCIDTypeViewLiveData getKYCIdTypeViewEvents ( KYCIDTypeViewLiveData . KYCIDTypeViewBindings viewBindings ) {
bindKYCIdTypeView ( viewBindings ) ;
public KYCIDTypeViewLiveData getKYCIdTypeViewEvents ( KYCIDTypeViewLiveData . KYCIDTypeViewBindings viewBindings , Boolean isBackRequired ) {
bindKYCIdTypeView ( viewBindings , isBackRequired ) ;
return idTypeLiveData ;
}
private void bindKYCIdTypeView ( KYCIDTypeViewLiveData . KYCIDTypeViewBindings viewBindings ) {
private void bindKYCIdTypeView ( KYCIDTypeViewLiveData . KYCIDTypeViewBindings viewBindings , Boolean isBackRequired ) {
if ( isBackRequired ) {
viewSubscriptions . add (
Observable . combineLatest (
viewBindings . getIdTypeFrontDocImageLoadedResultObservable ( ) ,
viewBindings . getIdTypeBackDocImageLoadedResultObservable ( ) ,
viewBindings . getAdditionalidTypeDocImageLoadedResultObservable ( ) ,
viewBindings . getAdditionalidBackTypeDocImageLoadedResultObservable ( ) ,
( isFrontIdPictureValid , isBackIdPictureValid , isAdditionalIdValid , isAdditionalIdBackValid ) - >
isFrontIdPictureValid & & isBackIdPictureValid & & isAdditionalIdValid & & isAdditionalIdBackValid
( isFrontIdPictureValid , isBackIdPictureValid , isAdditionalIdValid , isAdditionalIdBackValid ) - > isFrontIdPictureValid & & isBackIdPictureValid & & isAdditionalIdValid & & isAdditionalIdBackValid
) . subscribeWith ( new DisposableObserver < Boolean > ( ) {
@Override
@ -190,6 +193,32 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter
}
} )
) ;
} else {
viewSubscriptions . add (
Observable . combineLatest (
viewBindings . getIdTypeFrontDocImageLoadedResultObservable ( ) ,
viewBindings . getIdTypeBackDocImageLoadedResultObservable ( ) ,
viewBindings . getAdditionalidTypeDocImageLoadedResultObservable ( ) ,
( isFrontIdPictureValid , isBackIdPictureValid , isAdditionalIdValid ) - > isFrontIdPictureValid & & isBackIdPictureValid & & isAdditionalIdValid )
. subscribeWith ( new DisposableObserver < Boolean > ( ) {
@Override
public void onNext ( Boolean form2ValidationResult ) {
form2ValidationSubject . onNext ( form2ValidationResult ) ;
}
@Override
public void onError ( Throwable e ) {
form2ValidationSubject . onNext ( false ) ;
}
@Override
public void onComplete ( ) {
}
} )
) ;
}
}
@ -197,7 +226,6 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter
data . seedInitialData ( ) ;
data . formatToUpperCase ( ) ;
this . validator = new CustomerDetailViewValidator ( data ) ;
updateCustomerDetailData ( data ) ;
handleDocImages ( data ) ;
@ -234,6 +262,9 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter
}
IDTextDTO additionalId = data . getAdditionalIdTypeFromId ( personalInfoDTO . getAdditionalIdType ( ) ) ;
if ( additionalId ! = null ) {
isBackAdditionalRequired = additionalId . getBackRequired ( ) ;
}
customerDetailLiveData . getEmployerNameLiveData ( ) . postValue ( new FormInputStateDTO < > ( true , null , personalInfoDTO . getEmployeerName ( ) ) ) ;
customerDetailLiveData . getOccupationsLiveData ( ) . postValue ( new FormInputStateDTO < > ( true , null , occupation ) ) ;
customerDetailLiveData . getSourceOfFundLiveData ( ) . postValue ( new FormInputStateDTO < > ( true , null , sourceOfFund ) ) ;