Browse Source

KYC doc image preloader ui fixes

master
Preyea Regmi 5 years ago
parent
commit
70da6c7532
  1. 64
      app/src/main/java/com/gmeremit/online/gmeremittance_native/customer_support/view/CustomerSupportFragment.java
  2. 2
      app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/presenter/KYCV3PresenterInterface.java
  3. 23
      app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/presenter/KYCV3ViewModel.java
  4. 50
      app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/view/personal/CustomerDetailFragment.java
  5. 29
      app/src/main/res/layout/fragment_customer_support.xml
  6. 18
      app/src/main/res/layout/fragment_kyc_customer_detail.xml

64
app/src/main/java/com/gmeremit/online/gmeremittance_native/customer_support/view/CustomerSupportFragment.java

@ -27,6 +27,7 @@ import com.gmeremit.online.gmeremittance_native.customwidgets.CustomProgressDial
import com.gmeremit.online.gmeremittance_native.homeV2.HomeParentViewContractV2; import com.gmeremit.online.gmeremittance_native.homeV2.HomeParentViewContractV2;
import com.gmeremit.online.gmeremittance_native.supportV2.view.SupportActivityV2; import com.gmeremit.online.gmeremittance_native.supportV2.view.SupportActivityV2;
import com.gmeremit.online.gmeremittance_native.utils.ChatUtils; import com.gmeremit.online.gmeremittance_native.utils.ChatUtils;
import com.gmeremit.online.gmeremittance_native.utils.Utils;
import com.zoyi.channel.plugin.android.ChannelIO; import com.zoyi.channel.plugin.android.ChannelIO;
import com.zoyi.channel.plugin.android.ChannelPluginCompletionStatus; import com.zoyi.channel.plugin.android.ChannelPluginCompletionStatus;
import com.zoyi.channel.plugin.android.Guest; import com.zoyi.channel.plugin.android.Guest;
@ -45,8 +46,8 @@ import static com.gmeremit.online.gmeremittance_native.base.PrefKeys.USER_COOUNT
public class CustomerSupportFragment extends DialogFragment implements CustomerSupportContract.IView, OnBootListener { public class CustomerSupportFragment extends DialogFragment implements CustomerSupportContract.IView, OnBootListener {
private static final String CUSTOMER_SUPPORT_IS_GUEST_USER = "GUEST_USER_BUNDLE_KEY"; private static final String CUSTOMER_SUPPORT_IS_GUEST_USER = "GUEST_USER_BUNDLE_KEY";
@BindView(R.id.viewLiveChat)
View viewLiveChat;
@BindView(R.id.viewFaceBook)
View viewFaceBook;
@BindView(R.id.viewCall) @BindView(R.id.viewCall)
View viewCall; View viewCall;
@ -109,6 +110,20 @@ public class CustomerSupportFragment extends DialogFragment implements CustomerS
} }
private void showFaceBookPage() {
Intent intent = null;
String facebookUrl = getFacebookUri();
String fb_uri = "";
if (Utils.isAppInstalled("com.facebook.katana", getActivity().getPackageManager())) {
fb_uri = "fb://facewebmodal/f?href=" + facebookUrl;
} else {
fb_uri = facebookUrl;
}
intent = new Intent(Intent.ACTION_VIEW, Uri.parse(fb_uri + facebookUrl));
startActivity(intent);
dismissDialog();
}
public void showProgressBar(boolean action, String message) { public void showProgressBar(boolean action, String message) {
try { try {
if (action) { if (action) {
@ -189,11 +204,11 @@ public class CustomerSupportFragment extends DialogFragment implements CustomerS
} }
@OnClick({R.id.viewLiveChat, R.id.viewCall, R.id.chatView, R.id.btnCancel})
@OnClick({R.id.viewFaceBook, R.id.viewCall, R.id.chatView, R.id.btnCancel})
public void onClick(View view) { public void onClick(View view) {
switch (view.getId()) { switch (view.getId()) {
case R.id.viewLiveChat:
presenter.onSupportLiveChatClicked();
case R.id.viewFaceBook:
showFaceBookPage();
break; break;
case R.id.viewCall: case R.id.viewCall:
presenter.onSupportCallClicked(); presenter.onSupportCallClicked();
@ -303,4 +318,43 @@ public class CustomerSupportFragment extends DialogFragment implements CustomerS
dismissDialog(); dismissDialog();
} }
public String getFacebookUri() {
String localeCode = GmeApplication.getStorage().getString(USER_COOUNTRY_CODE, "NP");
Log.d("CurrentUserNativeCode", localeCode);
switch (localeCode.toUpperCase()) {
case "KH":
return "https://www.facebook.com/gmecambodia/?ref=br_rs";
case "TH":
return "https://www.facebook.com/gmethailand/?ref=br_rs";
case "LK":
return "https://www.facebook.com/gmeremitsrilanka/?ref=br_rs";
case "MN":
return "https://www.facebook.com/gmemongolia/?ref=br_rs";
case "MM":
return "https://www.facebook.com/gmemyanmar/?ref=br_rs";
case "NP":
return "https://www.facebook.com/gmenepal/?ref=br_rs";
case "ID":
return "https://www.facebook.com/gmeindonesia/?ref=br_rs";
case "BD":
return "https://www.facebook.com/gmebangladesh/?ref=br_rs";
case "RU":
return "https://www.facebook.com/gmenepal/?ref=br_rs";
case "UZ":
return "https://www.facebook.com/gmeuzbekistan/?ref=br_rs";
case "VN":
return "https://www.facebook.com/gmevietnam/?ref=br_rs";
case "PH":
return "https://www.facebook.com/gmephilippines/?ref=br_rs";
case "IN":
return "https://www.facebook.com/gmeremitindia/?ref=br_rs";
case "PK":
return "https://www.facebook.com/gmepakistan/?ref=br_rs";
default:
return "https://www.facebook.com/gmenepal/?ref=br_rs";
}
}
} }

2
app/src/main/java/com/gmeremit/online/gmeremittance_native/kycV3/presenter/KYCV3PresenterInterface.java

@ -30,7 +30,9 @@ public interface KYCV3PresenterInterface extends BasePresenterInterface {
LiveData<Boolean> getForm3SubmissionReadyLiveData(); LiveData<Boolean> getForm3SubmissionReadyLiveData();
LiveData<Boolean> getForm2AlternateIdNumberFieldAccessLiveData(); LiveData<Boolean> getForm2AlternateIdNumberFieldAccessLiveData();
LiveData<Bitmap> getPassportImageLiveData(); LiveData<Bitmap> getPassportImageLiveData();
LiveData<Boolean> getPassportImageLoadingLiveData();
LiveData<Bitmap> getAlternateImageLiveData(); LiveData<Bitmap> getAlternateImageLiveData();
LiveData<Boolean> getAlternateImageLoadingLiveData();
LiveData<Boolean> getAlternateIdIssueDateRequireLiveData(); LiveData<Boolean> getAlternateIdIssueDateRequireLiveData();
LiveData<Boolean> getAlternateIdExpiryDateRequireLiveData(); LiveData<Boolean> getAlternateIdExpiryDateRequireLiveData();
LiveData<Boolean> getIsCustomerKoreanLiveData(); LiveData<Boolean> getIsCustomerKoreanLiveData();

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

@ -65,7 +65,9 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter
private MutableLiveData<Boolean> customerDetailForm3Button; private MutableLiveData<Boolean> customerDetailForm3Button;
private MutableLiveData<Boolean> alternateIDNumberFieldEnableLiveData; private MutableLiveData<Boolean> alternateIDNumberFieldEnableLiveData;
private MutableLiveData<Bitmap> passportImageLiveData; private MutableLiveData<Bitmap> passportImageLiveData;
private MutableLiveData<Boolean> passportImageLoadingLiveData;
private MutableLiveData<Bitmap> alternateIDImageLiveData; private MutableLiveData<Bitmap> alternateIDImageLiveData;
private MutableLiveData<Boolean> alternateIDImageLoadingLiveData;
private MutableLiveData<Boolean> alternateIDIssueVisibilityDateRequireLiveData; private MutableLiveData<Boolean> alternateIDIssueVisibilityDateRequireLiveData;
private MutableLiveData<Boolean> alternateIDExpiryDateVisibilityLiveData; private MutableLiveData<Boolean> alternateIDExpiryDateVisibilityLiveData;
@ -123,7 +125,9 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter
this.alternateIdRelatedViewResetLiveData = new MutableLiveData<>(); this.alternateIdRelatedViewResetLiveData = new MutableLiveData<>();
this.alternateIDNumberFieldEnableLiveData = new MutableLiveData<>(); this.alternateIDNumberFieldEnableLiveData = new MutableLiveData<>();
this.passportImageLiveData = new MutableLiveData<>(); this.passportImageLiveData = new MutableLiveData<>();
this.passportImageLoadingLiveData = new MutableLiveData<>();
this.alternateIDImageLiveData = new MutableLiveData<>(); this.alternateIDImageLiveData = new MutableLiveData<>();
this.alternateIDImageLoadingLiveData = new MutableLiveData<>();
this.alternateIDIssueVisibilityDateRequireLiveData = new MutableLiveData<>(); this.alternateIDIssueVisibilityDateRequireLiveData = new MutableLiveData<>();
this.alternateIDExpiryDateVisibilityLiveData = new MutableLiveData<>(); this.alternateIDExpiryDateVisibilityLiveData = new MutableLiveData<>();
this.customerDetailViewSubscriptions = new CompositeDisposable(); this.customerDetailViewSubscriptions = new CompositeDisposable();
@ -191,7 +195,6 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter
if (shouldRedirectToPennyTestScreen) if (shouldRedirectToPennyTestScreen)
new Handler().postDelayed(() -> requestPennyTestFromServer("N"), 300); new Handler().postDelayed(() -> requestPennyTestFromServer("N"), 300);
//new Handler().postDelayed(()->customerKoreanLiveData.setValue(!isCustomerKorean),5000);
} }
@ -250,6 +253,7 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter
if (data.arePicturesAvailable()) { if (data.arePicturesAvailable()) {
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))
.delaySubscription(1, TimeUnit.SECONDS) .delaySubscription(1, TimeUnit.SECONDS)
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.map(responseBody -> { .map(responseBody -> {
@ -258,6 +262,7 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter
return file; return file;
}) })
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.doFinally(() -> passportImageLoadingLiveData.setValue(false))
.subscribeWith(new DisposableObserver<File>() { .subscribeWith(new DisposableObserver<File>() {
@Override @Override
public void onNext(File downloadedFile) { public void onNext(File downloadedFile) {
@ -267,7 +272,7 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter
@Override @Override
public void onError(Throwable e) { public void onError(Throwable e) {
// data.getPictures().setPassportImageAsFile(null);
} }
@Override @Override
@ -280,6 +285,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))
.delaySubscription(1, TimeUnit.SECONDS) .delaySubscription(1, TimeUnit.SECONDS)
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.map(responseBody -> { .map(responseBody -> {
@ -288,6 +294,7 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter
return file; return file;
}) })
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.doFinally(() -> alternateIDImageLoadingLiveData.setValue(false))
.subscribeWith(new DisposableObserver<File>() { .subscribeWith(new DisposableObserver<File>() {
@Override @Override
public void onNext(File downloadedFile) { public void onNext(File downloadedFile) {
@ -297,7 +304,7 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter
@Override @Override
public void onError(Throwable e) { public void onError(Throwable e) {
// data.getPictures().setAlternateIDImageAsFile(null);
} }
@Override @Override
@ -499,11 +506,21 @@ public class KYCV3ViewModel extends BaseViewModel implements KYCV3PresenterInter
return passportImageLiveData; return passportImageLiveData;
} }
@Override
public LiveData<Boolean> getPassportImageLoadingLiveData() {
return passportImageLoadingLiveData;
}
@Override @Override
public LiveData<Bitmap> getAlternateImageLiveData() { public LiveData<Bitmap> getAlternateImageLiveData() {
return alternateIDImageLiveData; return alternateIDImageLiveData;
} }
@Override
public LiveData<Boolean> getAlternateImageLoadingLiveData() {
return alternateIDImageLoadingLiveData;
}
@Override @Override
public LiveData<Boolean> getAlternateIdIssueDateRequireLiveData() { public LiveData<Boolean> getAlternateIdIssueDateRequireLiveData() {
return alternateIDIssueVisibilityDateRequireLiveData; return alternateIDIssueVisibilityDateRequireLiveData;

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

@ -385,15 +385,15 @@ public class CustomerDetailFragment extends BaseFragment implements KYCV3Present
btnSubmit2.setVisibility(GONE); btnSubmit2.setVisibility(GONE);
form3.setVisibility(View.VISIBLE); form3.setVisibility(View.VISIBLE);
if (val.getPictures().getPassportPicture() != null && val.getPictures().getPassportPicture().length() > 0) {
progressbar_passport_id.setVisibility(View.VISIBLE);
//
}
if (val.getPictures().getAnotherIDPicture() != null && val.getPictures().getAnotherIDPicture().length() > 0) {
progressbar_alternate_id.setVisibility(View.VISIBLE);
// if (val.getPictures().getPassportPicture() != null && val.getPictures().getPassportPicture().length() > 0) {
// progressbar_passport_id.setVisibility(View.VISIBLE);
////
// }
// //
}
// if (val.getPictures().getAnotherIDPicture() != null && val.getPictures().getAnotherIDPicture().length() > 0) {
// progressbar_alternate_id.setVisibility(View.VISIBLE);
////
// }
} }
} }
@ -402,15 +402,45 @@ public class CustomerDetailFragment extends BaseFragment implements KYCV3Present
}); });
kycv3ViewModel.getPassportImageLiveData().observe(getViewLifecycleOwner(), bitmap -> { kycv3ViewModel.getPassportImageLiveData().observe(getViewLifecycleOwner(), bitmap -> {
progressbar_passport_id.setVisibility(GONE);
if (bitmap != null) {
Utility.showImageFromBitmap(getActivity(), iv_passport_id, bitmap); Utility.showImageFromBitmap(getActivity(), iv_passport_id, bitmap);
form3ViewBindings.passportIDDocPublishSubject.onNext(true); form3ViewBindings.passportIDDocPublishSubject.onNext(true);
} else
iv_passport_id.setImageResource(R.drawable.ic_passport_picture);
});
kycv3ViewModel.getPassportImageLoadingLiveData().observe(getViewLifecycleOwner(),action->{
if(action)
{
iv_passport_id.setVisibility(View.INVISIBLE);
progressbar_passport_id.setVisibility(View.VISIBLE);
}
else
{
progressbar_passport_id.setVisibility(View.INVISIBLE);
iv_passport_id.setVisibility(View.VISIBLE);
}
});
kycv3ViewModel.getAlternateImageLoadingLiveData().observe(getViewLifecycleOwner(),action->{
if(action)
{
iv_alternate_id.setVisibility(View.INVISIBLE);
progressbar_alternate_id.setVisibility(View.VISIBLE);
}
else
{
progressbar_alternate_id.setVisibility(View.INVISIBLE);
iv_alternate_id.setVisibility(View.VISIBLE);
}
}); });
kycv3ViewModel.getAlternateImageLiveData().observe(getViewLifecycleOwner(), bitmap -> { kycv3ViewModel.getAlternateImageLiveData().observe(getViewLifecycleOwner(), bitmap -> {
progressbar_alternate_id.setVisibility(GONE);
if (bitmap != null) {
Utility.showImageFromBitmap(getActivity(), iv_alternate_id, bitmap); Utility.showImageFromBitmap(getActivity(), iv_alternate_id, bitmap);
form3ViewBindings.alternateIDDocPublishSubject.onNext(true); form3ViewBindings.alternateIDDocPublishSubject.onNext(true);
} else
iv_passport_id.setImageResource(R.drawable.ic_another_id_picture);
}); });

29
app/src/main/res/layout/fragment_customer_support.xml

@ -40,28 +40,27 @@
android:background="@color/divider" /> android:background="@color/divider" />
<LinearLayout <LinearLayout
android:id="@+id/viewLiveChat"
android:id="@+id/viewFaceBook"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="56dp" android:layout_height="56dp"
android:visibility="gone"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingLeft="30dp" android:paddingLeft="30dp"
android:paddingRight="30dp">
android:paddingRight="30dp"
android:visibility="visible">
<ImageView <ImageView
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_width="@dimen/_20sdp"
android:layout_height="@dimen/_20sdp"
android:layout_gravity="center" android:layout_gravity="center"
android:contentDescription="@string/app_name" android:contentDescription="@string/app_name"
android:src="@drawable/ic_support_livechat" />
android:src="@drawable/ic_fb" />
<com.gmeremit.online.gmeremittance_native.customwidgets.GmeTextView <com.gmeremit.online.gmeremittance_native.customwidgets.GmeTextView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_marginLeft="19dp"
android:layout_marginStart="19dp"
android:gravity="center_vertical"
android:text="Live Chat"
android:gravity="center"
android:text="Facebook"
android:textColor="@color/cs_red" android:textColor="@color/cs_red"
android:textSize="20sp" /> android:textSize="20sp" />
</LinearLayout> </LinearLayout>
@ -82,8 +81,8 @@
android:visibility="visible"> android:visibility="visible">
<ImageView <ImageView
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_width="@dimen/_20sdp"
android:layout_height="@dimen/_20sdp"
android:layout_gravity="center" android:layout_gravity="center"
app:srcCompat="@drawable/ic_chat" /> app:srcCompat="@drawable/ic_chat" />
@ -144,8 +143,8 @@
android:paddingRight="30dp"> android:paddingRight="30dp">
<ImageView <ImageView
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_width="@dimen/_20sdp"
android:layout_height="@dimen/_20sdp"
android:layout_gravity="center" android:layout_gravity="center"
android:contentDescription="@string/app_name" android:contentDescription="@string/app_name"
android:src="@drawable/ic_support_phone" /> android:src="@drawable/ic_support_phone" />
@ -154,9 +153,7 @@
android:id="@+id/callTxtView" android:id="@+id/callTxtView"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:gravity="center" android:gravity="center"
android:text="1588 6864"
android:textColor="@color/cs_red" android:textColor="@color/cs_red"
android:textSize="20sp" /> android:textSize="20sp" />
</LinearLayout> </LinearLayout>

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

@ -759,12 +759,10 @@
<ImageView <ImageView
android:id="@+id/iv_passport_id" android:id="@+id/iv_passport_id"
android:layout_width="@dimen/_100sdp"
android:layout_height="@dimen/_100sdp"
android:maxHeight="@dimen/_80sdp"
android:maxWidth="@dimen/_80sdp"
android:layout_marginStart="@dimen/_26sdp"
android:layout_marginEnd="@dimen/_26sdp"
android:layout_width="@dimen/_80sdp"
android:layout_height="@dimen/_80sdp"
android:layout_marginStart="@dimen/_20sdp"
android:layout_marginEnd="@dimen/_20sdp"
android:scaleType="centerCrop" android:scaleType="centerCrop"
android:src="@drawable/ic_passport_picture" android:src="@drawable/ic_passport_picture"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
@ -846,10 +844,10 @@
<ImageView <ImageView
android:id="@+id/iv_alternate_id" android:id="@+id/iv_alternate_id"
android:layout_width="@dimen/_100sdp"
android:layout_height="@dimen/_100sdp"
android:layout_marginStart="@dimen/_26sdp"
android:layout_marginEnd="@dimen/_26sdp"
android:layout_width="@dimen/_80sdp"
android:layout_height="@dimen/_80sdp"
android:layout_marginStart="@dimen/_20sdp"
android:layout_marginEnd="@dimen/_20sdp"
android:scaleType="centerCrop" android:scaleType="centerCrop"
android:src="@drawable/ic_another_id_picture" android:src="@drawable/ic_another_id_picture"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"

Loading…
Cancel
Save