Browse Source

Location space trimmed

master
Preyea Regmi 5 years ago
parent
commit
f25ea9b510
  1. 2
      app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/presenter/HomeV2Presenter.java
  2. 5
      app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/gateway/FileDownloadGateway.java
  3. 13
      app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/presenter/KYCV3ViewModel.java
  4. 72
      app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/view/personal/CustomerDetailFragment.java
  5. 7
      app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/RxUtils.java
  6. 3
      app/src/main/res/layout/fragment_kyc_customer_detail.xml

2
app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/presenter/HomeV2Presenter.java

@ -64,7 +64,7 @@ public class HomeV2Presenter extends BasePresenter implements HomeV2PresenterInt
@Override @Override
public void getRequiredData() { public void getRequiredData() {
compositeDisposable.add( compositeDisposable.add(
Observable.concat(getDataFromServerAndSaveIt().timeout(5, TimeUnit.SECONDS).onErrorResumeNext(new Function<Throwable, ObservableSource<? extends UserInfoModelV2>>() {
Observable.concat(getDataFromServerAndSaveIt().timeout(10, TimeUnit.SECONDS).onErrorResumeNext(new Function<Throwable, ObservableSource<? extends UserInfoModelV2>>() {
@Override @Override
public ObservableSource<? extends UserInfoModelV2> apply(Throwable throwable) throws Exception { public ObservableSource<? extends UserInfoModelV2> apply(Throwable throwable) throws Exception {
if (throwable instanceof SessionExpiredException) if (throwable instanceof SessionExpiredException)

5
app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/gateway/FileDownloadGateway.java

@ -10,6 +10,8 @@ import com.google.android.gms.common.util.IOUtils;
import java.io.File; import java.io.File;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import io.reactivex.Observable; import io.reactivex.Observable;
import okhttp3.ResponseBody; import okhttp3.ResponseBody;
@ -24,9 +26,10 @@ public class FileDownloadGateway extends PrivilegedGateway {
} }
public File getTempFile(Context context, String fileName) throws IOException { public File getTempFile(Context context, String fileName) throws IOException {
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
File storageDir = context.getCacheDir(); File storageDir = context.getCacheDir();
File image = File.createTempFile( File image = File.createTempFile(
fileName,
fileName+"_"+timeStamp,
".jpg", ".jpg",
storageDir storageDir
); );

13
app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/presenter/KYCV3ViewModel.java

@ -259,7 +259,7 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter
if (data.getPictures().getPassportPicture() != null && data.getPictures().getPassportPicture().length() > 0) if (data.getPictures().getPassportPicture() != null && data.getPictures().getPassportPicture().length() > 0)
compositeDisposable.add(fileDownloadGateway.downloadFile(data.getPictures().getPassportPicture()) compositeDisposable.add(fileDownloadGateway.downloadFile(data.getPictures().getPassportPicture())
.doOnSubscribe(subs -> passportImageLoadingLiveData.postValue(true)) .doOnSubscribe(subs -> passportImageLoadingLiveData.postValue(true))
.delaySubscription(1, TimeUnit.SECONDS)
.delaySubscription(300, TimeUnit.MILLISECONDS)
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.map(responseBody -> { .map(responseBody -> {
File file = fileDownloadGateway.writeToFile(responseBody, fileDownloadGateway.getTempFile(view.getContext(), "AlternateIdDoc")); File file = fileDownloadGateway.writeToFile(responseBody, fileDownloadGateway.getTempFile(view.getContext(), "AlternateIdDoc"));
@ -291,7 +291,7 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter
if (data.getPictures().getAnotherIDPicture() != null && data.getPictures().getAnotherIDPicture().length() > 0) if (data.getPictures().getAnotherIDPicture() != null && data.getPictures().getAnotherIDPicture().length() > 0)
compositeDisposable.add(fileDownloadGateway.downloadFile(data.getPictures().getAnotherIDPicture()) compositeDisposable.add(fileDownloadGateway.downloadFile(data.getPictures().getAnotherIDPicture())
.doOnSubscribe(subs -> alternateIDImageLoadingLiveData.postValue(true)) .doOnSubscribe(subs -> alternateIDImageLoadingLiveData.postValue(true))
.delaySubscription(1, TimeUnit.SECONDS)
.delaySubscription(300, TimeUnit.MILLISECONDS)
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.map(responseBody -> { .map(responseBody -> {
File file = fileDownloadGateway.writeToFile(responseBody, fileDownloadGateway.getTempFile(view.getContext(), "PassportIdDoc")); File file = fileDownloadGateway.writeToFile(responseBody, fileDownloadGateway.getTempFile(view.getContext(), "PassportIdDoc"));
@ -369,12 +369,8 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter
validateAlternateIDFromServer(); validateAlternateIDFromServer();
return result; return result;
}), }),
this.view.getCustomerDetailViewContract().getForm2ViewBindings().getAlternateIDIssuedDateChangeEvent().map(val -> {
return validator.validateAlternateIDIssuedDate(val.toString());
}),
this.view.getCustomerDetailViewContract().getForm2ViewBindings().getAlternateIDExpiryDateChangeEvent().map(val -> {
return validator.validateAlternateIDExpiryDate(val.toString());
}),
this.view.getCustomerDetailViewContract().getForm2ViewBindings().getAlternateIDIssuedDateChangeEvent().map(val -> validator.validateAlternateIDIssuedDate(val.toString())),
this.view.getCustomerDetailViewContract().getForm2ViewBindings().getAlternateIDExpiryDateChangeEvent().map(val -> validator.validateAlternateIDExpiryDate(val.toString())),
this.view.getCustomerDetailViewContract().getForm2ViewBindings().getAlternateIdTypeChangeEvent().map(val -> { this.view.getCustomerDetailViewContract().getForm2ViewBindings().getAlternateIdTypeChangeEvent().map(val -> {
boolean result = validator.validateAlternateIdType(val); boolean result = validator.validateAlternateIdType(val);
if (validator.hasRequiredDataForAlternatIdVerificationFromServer()) if (validator.hasRequiredDataForAlternatIdVerificationFromServer())
@ -679,7 +675,6 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter
} }
//Validate ID number with corresponding IdType from server after validating locally. //Validate ID number with corresponding IdType from server after validating locally.
//So dependent data needs to be validated prior validating from server.
@Override @Override
public void validateAlternateIDFromServer() { public void validateAlternateIDFromServer() {
IDTypeDTO selectedIDType = validator.getKycRelatedDataDTO().getSelectedIdTYpeFromId(validator.getKycRelatedDataDTO().getPrimaryInformation().getAnotherIDType()); IDTypeDTO selectedIDType = validator.getKycRelatedDataDTO().getSelectedIdTYpeFromId(validator.getKycRelatedDataDTO().getPrimaryInformation().getAnotherIDType());

72
app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/view/personal/CustomerDetailFragment.java

@ -306,27 +306,25 @@ public class CustomerDetailFragment extends BaseFragment implements KYCV3Present
private void subscribeToSubmitButtonEnable(KYCV3ViewModel kycv3ViewModel) { private void subscribeToSubmitButtonEnable(KYCV3ViewModel kycv3ViewModel) {
kycv3ViewModel.getForm1SubmissionReadyLiveData().observe(getViewLifecycleOwner(), val -> btnSubmit1.setEnabled(val)); kycv3ViewModel.getForm1SubmissionReadyLiveData().observe(getViewLifecycleOwner(), val -> btnSubmit1.setEnabled(val));
kycv3ViewModel.getForm2SubmissionReadyLiveData().observe(getViewLifecycleOwner(), val -> {
btnSubmit2.setEnabled(val);
// if (val)
// btnSubmit2.requestFocus();
});
kycv3ViewModel.getForm3SubmissionReadyLiveData().observe(getViewLifecycleOwner(), val -> {
btnSubmit3.setEnabled(val);
// if (val)
// btnSubmit3.requestFocus();
});
kycv3ViewModel.getForm2SubmissionReadyLiveData().observe(getViewLifecycleOwner(), val -> btnSubmit2.setEnabled(val));
kycv3ViewModel.getForm3SubmissionReadyLiveData().observe(getViewLifecycleOwner(), val -> btnSubmit3.setEnabled(val));
} }
private void subscribeToCustomerRelatedData(KYCV3ViewModel kycv3ViewModel) { private void subscribeToCustomerRelatedData(KYCV3ViewModel kycv3ViewModel) {
kycv3ViewModel.getCustomerDetailRelatedFormLiveData().observe(getViewLifecycleOwner(), val -> { kycv3ViewModel.getCustomerDetailRelatedFormLiveData().observe(getViewLifecycleOwner(), val -> {
//Since we are pre-selecting branch as first item from list if no branch is selected.
//So this data is always available to show to the user as preselected data
IDTextDTO selectedGmeBranch = val.getSelectedGmeBranchFromId(val.getPrimaryInformation().getBranchId()); IDTextDTO selectedGmeBranch = val.getSelectedGmeBranchFromId(val.getPrimaryInformation().getBranchId());
if (selectedGmeBranch != null) { if (selectedGmeBranch != null) {
ed_branch.setText(selectedGmeBranch.toString()); ed_branch.setText(selectedGmeBranch.toString());
form2ViewBindings.branchSubject.onNext(selectedGmeBranch); form2ViewBindings.branchSubject.onNext(selectedGmeBranch);
} }
//We want to show segmented form if data are available to display.
//Check data is available in cascading order.
//Order: Personal Info > Primary Info > Pictures
if (val.isPersonalInfoAvailable()) { if (val.isPersonalInfoAvailable()) {
ed_firstname.setText(val.getPersonalInformation().getFullName()); ed_firstname.setText(val.getPersonalInformation().getFullName());
ed_email.setText(val.getPersonalInformation().getEmail()); ed_email.setText(val.getPersonalInformation().getEmail());
@ -399,6 +397,8 @@ public class CustomerDetailFragment extends BaseFragment implements KYCV3Present
}); });
//Remaining data biding with corresponding views view
kycv3ViewModel.getPassportImageLiveData().observe(getViewLifecycleOwner(), bitmap -> { kycv3ViewModel.getPassportImageLiveData().observe(getViewLifecycleOwner(), bitmap -> {
if (bitmap != null) { if (bitmap != null) {
Utility.showImageFromBitmap(getActivity(), iv_passport_id, bitmap); Utility.showImageFromBitmap(getActivity(), iv_passport_id, bitmap);
@ -454,7 +454,7 @@ public class CustomerDetailFragment extends BaseFragment implements KYCV3Present
kycv3ViewModel.getPictureLabelForAnotherIDLiveData().observe(getViewLifecycleOwner(), label -> { kycv3ViewModel.getPictureLabelForAnotherIDLiveData().observe(getViewLifecycleOwner(), label -> {
if (label.length() == 0) { if (label.length() == 0) {
anotherIdPictureLabel.setText("Another ID(Optional)");
anotherIdPictureLabel.setText(getString(R.string.another_id_information_text));
iv_alternate_id.setImageResource(R.drawable.ic_another_id_picture); iv_alternate_id.setImageResource(R.drawable.ic_another_id_picture);
} else } else
anotherIdPictureLabel.setText(label); anotherIdPictureLabel.setText(label);
@ -506,10 +506,8 @@ public class CustomerDetailFragment extends BaseFragment implements KYCV3Present
kycv3ViewModel.getAlternateImageRequiredLiveData().observe(getViewLifecycleOwner(), action -> { kycv3ViewModel.getAlternateImageRequiredLiveData().observe(getViewLifecycleOwner(), action -> {
if (action) { if (action) {
Log.d("ALTERNATEIMAGE", String.valueOf(action));
alternateIDImageViewContainer.setVisibility(View.VISIBLE); alternateIDImageViewContainer.setVisibility(View.VISIBLE);
} else { } else {
Log.d("ALTERNATEIMAGE", String.valueOf(action));
alternateIDImageViewContainer.setVisibility(View.GONE); alternateIDImageViewContainer.setVisibility(View.GONE);
} }
@ -518,6 +516,7 @@ public class CustomerDetailFragment extends BaseFragment implements KYCV3Present
} }
//Error data binding with corresponding view elements in the form.
private void subscribeToCustomerRelatedDataError(KYCV3ViewModel kycv3ViewModel) { private void subscribeToCustomerRelatedDataError(KYCV3ViewModel kycv3ViewModel) {
kycv3ViewModel.getCustomerDetailRelatedFormErrorLiveData().getFullNameErrorLiveData().observe(getViewLifecycleOwner(), error -> fullNameWrapper.setError(error)); kycv3ViewModel.getCustomerDetailRelatedFormErrorLiveData().getFullNameErrorLiveData().observe(getViewLifecycleOwner(), error -> fullNameWrapper.setError(error));
kycv3ViewModel.getCustomerDetailRelatedFormErrorLiveData().getGenderErrorLiveData().observe(getViewLifecycleOwner(), error -> genderListWrapper.setError(error)); kycv3ViewModel.getCustomerDetailRelatedFormErrorLiveData().getGenderErrorLiveData().observe(getViewLifecycleOwner(), error -> genderListWrapper.setError(error));
@ -555,7 +554,9 @@ public class CustomerDetailFragment extends BaseFragment implements KYCV3Present
RxUtils.getAddressFromGPS(getActivity()) RxUtils.getAddressFromGPS(getActivity())
.doOnSubscribe(sub -> showProgressBar(true, "")) .doOnSubscribe(sub -> showProgressBar(true, ""))
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.map(address-> address.replaceAll("(?i)seoul", ""))
.map(address->address.replaceAll("-"," "))
.map(address->address.replaceAll("[^a-zA-Z ]",""))
.map(address-> address.replaceAll("(?i)seoul", "").trim())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.doFinally(() -> showProgressBar(false, "")) .doFinally(() -> showProgressBar(false, ""))
.subscribe(new Observer<String>() { .subscribe(new Observer<String>() {
@ -566,6 +567,7 @@ public class CustomerDetailFragment extends BaseFragment implements KYCV3Present
@Override @Override
public void onNext(String s) { public void onNext(String s) {
Log.d("RXGPSAddress","Final Address: "+s);
if (s != null && s.length() > 0) if (s != null && s.length() > 0)
ed_address.setText(s); ed_address.setText(s);
else else
@ -609,46 +611,22 @@ public class CustomerDetailFragment extends BaseFragment implements KYCV3Present
@Override @Override
public void onStart() { public void onStart() {
super.onStart(); super.onStart();
setImeActionOnEdittexts(true);
rootView.setOnTouchListener((view, motionevent) -> {
hideKeyBoard();
return true;
});
//
// rootView.setOnTouchListener((view, motionevent) -> {
// hideKeyBoard();
// return true;
// });
} }
@Override @Override
public void onStop() { public void onStop() {
super.onStop(); super.onStop();
setImeActionOnEdittexts(false);
rootView.setOnTouchListener(null);
}
public void setImeActionOnEdittexts(boolean action) {
// if(action)
// {
// ed_anotherId.setOnEditorActionListener((v, actionId, event) -> {new Handler().postDelayed(()-> promptDatePickerForIssueDate(ed_anotherId),250);return true;});
// }
// else
// {
// ed_anotherId.setOnEditorActionListener(null);
//
// }
}
private boolean clearFocusableFields() {
boolean hasPassportFieldFocus = false;
boolean hasAlternateIDFieldFocus = false;
if (ed_passportId.hasFocus()) {
ed_passportId.clearFocus();
hasPassportFieldFocus = true;
}
if (ed_anotherId.hasFocus()) {
ed_anotherId.clearFocus();
hasAlternateIDFieldFocus = true;
// rootView.setOnTouchListener(null);
} }
return hasPassportFieldFocus || hasAlternateIDFieldFocus;
}
@OnClick(R.id.btn_submit3) @OnClick(R.id.btn_submit3)
public void onClick3() { public void onClick3() {
@ -888,7 +866,6 @@ public class CustomerDetailFragment extends BaseFragment implements KYCV3Present
public void enablePassportNumberFocusChangeListener(boolean action) { public void enablePassportNumberFocusChangeListener(boolean action) {
if (action) { if (action) {
ed_passportId.setOnFocusChangeListener((v, hasFocus) -> { ed_passportId.setOnFocusChangeListener((v, hasFocus) -> {
Log.d("KYCProcessPassport", String.valueOf(hasFocus));
if (!hasFocus) { if (!hasFocus) {
ViewModelProviders.of(getActivity()).get(KYCV3ViewModel.class).validatePassportNumberFromServer(); ViewModelProviders.of(getActivity()).get(KYCV3ViewModel.class).validatePassportNumberFromServer();
ed_passportId.setOnFocusChangeListener(null); ed_passportId.setOnFocusChangeListener(null);
@ -905,7 +882,6 @@ public class CustomerDetailFragment extends BaseFragment implements KYCV3Present
public void scrollToPassportNumberView() { public void scrollToPassportNumberView() {
scrollView.postDelayed(() -> { scrollView.postDelayed(() -> {
int scrollTo = ((View) passportIdWrapper.getParent().getParent()).getTop() + passportIdWrapper.getTop(); int scrollTo = ((View) passportIdWrapper.getParent().getParent()).getTop() + passportIdWrapper.getTop();
ObjectAnimator.ofInt(scrollView, "scrollY", scrollTo).setDuration(750).start(); ObjectAnimator.ofInt(scrollView, "scrollY", scrollTo).setDuration(750).start();
}, 300); }, 300);

7
app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/RxUtils.java

@ -50,8 +50,7 @@ public class RxUtils {
String address = ""; String address = "";
if (addresses.get(0).getAddressLine(0) != null) { if (addresses.get(0).getAddressLine(0) != null) {
for(int i = 0; i <= addresses.get(0).getMaxAddressLineIndex(); i++) {
}
Log.d("RXGPSAddress","Unformatted address: "+addresses.get(0).toString());
address = addresses.get(0).getAddressLine(0); // If any additional address line present than only, check with max available address lines by getMaxAddressLineIndex() address = addresses.get(0).getAddressLine(0); // If any additional address line present than only, check with max available address lines by getMaxAddressLineIndex()
address = address.replaceAll(",", ""); address = address.replaceAll(",", "");
@ -65,8 +64,8 @@ public class RxUtils {
address = address.replace(addresses.get(0).getPostalCode(), ""); address = address.replace(addresses.get(0).getPostalCode(), "");
} }
} }
return Observable.just(address.trim());
}).timeout(6000, TimeUnit.MILLISECONDS).onErrorResumeNext(Observable.error(new Throwable(((Context) activity).getString(R.string.location_not_available))));
return Observable.just(address);
}).timeout(10000, TimeUnit.MILLISECONDS).onErrorResumeNext(Observable.error(new Throwable(((Context) activity).getString(R.string.location_not_available))));
} else } else
return Observable.error(new Throwable(((Context) activity).getString(R.string.gps_off_text))); return Observable.error(new Throwable(((Context) activity).getString(R.string.gps_off_text)));

3
app/src/main/res/layout/fragment_kyc_customer_detail.xml

@ -224,12 +224,11 @@
<com.gmeremit.online.gmeremittance_native.customwidgets.GmeEditText <com.gmeremit.online.gmeremittance_native.customwidgets.GmeEditText
android:id="@+id/ed_address" android:id="@+id/ed_address"
style="@style/editetxtsingleline"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="24dp" android:layout_marginEnd="24dp"
android:imeOptions="actionDone" android:imeOptions="actionDone"
android:singleLine="false" />
android:singleLine="true" />
</com.gmeremit.online.gmeremittance_native.customwidgets.GMETextInputLayout> </com.gmeremit.online.gmeremittance_native.customwidgets.GMETextInputLayout>
<ImageView <ImageView

Loading…
Cancel
Save