Browse Source

if OTP not verified beneficiary selected proceed to terms and conditions before OTP

new_design
Santosh Bhandary 3 years ago
parent
commit
8c7a26f28c
  1. 18
      app/src/main/AndroidManifest.xml
  2. 40
      app/src/main/java/com/swifttech/remit/jmecustomer/features/recipientmanagement/gateway/recepientTermsConditions/RecipientTermsGateway.java
  3. 17
      app/src/main/java/com/swifttech/remit/jmecustomer/features/recipientmanagement/gateway/recepientTermsConditions/RecipientTermsGatewayInterface.java
  4. 13
      app/src/main/java/com/swifttech/remit/jmecustomer/features/recipientmanagement/presenter/recepientTermsConditions/RecipientPresenterTermsInterface.java
  5. 162
      app/src/main/java/com/swifttech/remit/jmecustomer/features/recipientmanagement/presenter/recepientTermsConditions/RecipientTermsViewModel.java
  6. 1
      app/src/main/java/com/swifttech/remit/jmecustomer/features/recipientmanagement/presenter/recipientlistingV3/RecipientListingV3PresenterInterface.java
  7. 32
      app/src/main/java/com/swifttech/remit/jmecustomer/features/recipientmanagement/view/RecipientTermsViewModelFactory.java
  8. 107
      app/src/main/java/com/swifttech/remit/jmecustomer/features/recipientmanagement/view/recepientTermsConditions/BeneficiaryAddEditV3TermsActivity.java
  9. 9
      app/src/main/java/com/swifttech/remit/jmecustomer/features/recipientmanagement/view/recepientTermsConditions/RecipientTermsContractInterface.java
  10. 1
      app/src/main/java/com/swifttech/remit/jmecustomer/features/recipientmanagement/view/recipientaddeditV3/BeneficiaryAddEditV3Fragment.java
  11. 9
      app/src/main/java/com/swifttech/remit/jmecustomer/features/recipientmanagement/view/recipientaddeditV3/BeneficiaryAddEditV3TermsFragment.java
  12. 17
      app/src/main/java/com/swifttech/remit/jmecustomer/features/recipientmanagement/view/recipientlistingV3/RecipientListingV3Activity.java
  13. 41
      app/src/main/java/com/swifttech/remit/jmecustomer/features/sendmoney/view/SendMoneyV2Activity.java
  14. 5
      app/src/main/java/com/swifttech/remit/jmecustomer/features/sendmoney/view/verification/TermsAndConditionV2BrowserActivity.java
  15. 100
      app/src/main/java/com/swifttech/remit/jmecustomer/features/webbrowser/WebBrowserV2Activity.java
  16. 107
      app/src/main/res/layout/activity_web_browser_v2.xml
  17. 9
      app/src/main/res/layout/beneficiary_add_edit_v3_terms_activity.xml
  18. 2
      app/src/main/res/values/strings.xml

18
app/src/main/AndroidManifest.xml

@ -18,6 +18,7 @@
<application
android:name=".RemitApplication"
android:allowBackup="false"
android:debuggable="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:largeHeap="true"
@ -27,9 +28,7 @@
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true"
tools:ignore="GoogleAppIndexingWarning,HardcodedDebugMode"
tools:replace="android:allowBackup,android:supportsRtl"
android:debuggable="true"
>
tools:replace="android:allowBackup,android:supportsRtl">
<activity
android:name=".features.renewId.view.RenewIdActivity"
@ -176,6 +175,12 @@
android:screenOrientation="portrait"
android:theme="@style/AppTheme.NoActionBar"
android:windowSoftInputMode="stateAlwaysHidden" />
<activity android:name=".features.recipientmanagement.view.recepientTermsConditions.BeneficiaryAddEditV3TermsActivity"
android:screenOrientation="portrait"
android:theme="@style/AppTheme.NoActionBar"
android:windowSoftInputMode="stateAlwaysHidden"
/>
<activity
android:name=".features.recipientlisting.view.recipientlisting.RecipientListingActivity"
android:screenOrientation="portrait"
@ -198,11 +203,14 @@
android:screenOrientation="portrait"
android:theme="@style/AppTheme.Launcher"
android:windowSoftInputMode="adjustResize|stateAlwaysHidden">
<!-- <intent-filter>
<!--
<intent-filter>
<action android:name="HOME" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>-->
</intent-filter>
-->
<intent-filter>
<action android:name="android.intent.action.MAIN" />

40
app/src/main/java/com/swifttech/remit/jmecustomer/features/recipientmanagement/gateway/recepientTermsConditions/RecipientTermsGateway.java

@ -0,0 +1,40 @@
package com.swifttech.remit.jmecustomer.features.recipientmanagement.gateway.recepientTermsConditions;
import com.google.gson.JsonObject;
import com.swifttech.remit.jmecustomer.base.PrivilegedGateway;
import com.swifttech.remit.jmecustomer.utils.Constants;
import com.swifttech.remit.jmecustomer.utils.https.HttpClientV2;
import io.reactivex.Observable;
import okhttp3.ResponseBody;
public class RecipientTermsGateway extends PrivilegedGateway implements RecipientTermsGatewayInterface {
@Override
public Observable<ResponseBody> verifyEmailCode(String auth,
String userId,
String OTP,
String requestFor,
String receiverId) {
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty(Constants.USER_ID_KEY, userId);
jsonObject.addProperty(Constants.OTP_KEY, OTP);
jsonObject.addProperty(Constants.REQUEST_FOR_KEY, requestFor);
jsonObject.addProperty(Constants.RECEIVER_ID_KEY, receiverId);
return HttpClientV2.getInstance().verifyEmailCode(auth,jsonObject);
}
@Override
public Observable<ResponseBody> requestForOtp(String auth,
String userId,
String OTP,
String requestFor,
String receiverId
) {
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty(Constants.USER_ID_KEY, userId);
jsonObject.addProperty(Constants.OTP_KEY, OTP);
jsonObject.addProperty(Constants.REQUEST_FOR_KEY, requestFor);
jsonObject.addProperty(Constants.RECEIVER_ID_KEY, receiverId);
return HttpClientV2.getInstance().requestForOtp(auth, jsonObject);
}
}

17
app/src/main/java/com/swifttech/remit/jmecustomer/features/recipientmanagement/gateway/recepientTermsConditions/RecipientTermsGatewayInterface.java

@ -0,0 +1,17 @@
package com.swifttech.remit.jmecustomer.features.recipientmanagement.gateway.recepientTermsConditions;
import com.swifttech.remit.jmecustomer.base.PrivilegedGatewayInterface;
import io.reactivex.Observable;
import okhttp3.ResponseBody;
public interface RecipientTermsGatewayInterface extends PrivilegedGatewayInterface {
Observable<ResponseBody> verifyEmailCode(String auth,
String userId,
String OTP,
String requestFor,
String receiverId);
Observable<ResponseBody> requestForOtp(String auth, String userId, String OTP, String requestFor, String receiverId);
}

13
app/src/main/java/com/swifttech/remit/jmecustomer/features/recipientmanagement/presenter/recepientTermsConditions/RecipientPresenterTermsInterface.java

@ -0,0 +1,13 @@
package com.swifttech.remit.jmecustomer.features.recipientmanagement.presenter.recepientTermsConditions;
import com.swifttech.remit.jmecustomer.base.BasePresenterInterface;
public interface RecipientPresenterTermsInterface extends BasePresenterInterface {
void verifyEmailCode(String emailCode);
void requestForOtp();
}

162
app/src/main/java/com/swifttech/remit/jmecustomer/features/recipientmanagement/presenter/recepientTermsConditions/RecipientTermsViewModel.java

@ -0,0 +1,162 @@
package com.swifttech.remit.jmecustomer.features.recipientmanagement.presenter.recepientTermsConditions;
import com.swifttech.remit.jmecustomer.R;
import com.swifttech.remit.jmecustomer.base.BaseViewModel;
import com.swifttech.remit.jmecustomer.common.customwidgets.CustomAlertDialog;
import com.swifttech.remit.jmecustomer.features.recipientmanagement.gateway.recepientTermsConditions.RecipientTermsGatewayInterface;
import com.swifttech.remit.jmecustomer.features.recipientmanagement.model.recipientlistingV3.ReceiverInfoV3Model;
import com.swifttech.remit.jmecustomer.features.recipientmanagement.view.recepientTermsConditions.RecipientTermsContractInterface;
import com.swifttech.remit.jmecustomer.utils.Constants;
import com.swifttech.remit.jmecustomer.utils.https.GenericApiObserverResponseV2;
import com.swifttech.remit.jmecustomer.utils.https.GenericResponseDataModel;
import com.swifttech.remit.jmecustomer.utils.https.MessageResponseDataModel;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.schedulers.Schedulers;
import static com.swifttech.remit.jmecustomer.utils.Constants.REQUEST_FOR_REC_VALUE;
public class RecipientTermsViewModel extends BaseViewModel implements RecipientPresenterTermsInterface {
private final CompositeDisposable compositeDisposable;
RecipientTermsGatewayInterface gateway;
ReceiverInfoV3Model receiverInfoV3Model;
RecipientTermsContractInterface view;
public RecipientTermsViewModel(
RecipientTermsGatewayInterface gateway,
RecipientTermsContractInterface view,
ReceiverInfoV3Model receiverInfoV3Model
) {
this.compositeDisposable = new CompositeDisposable();
this.gateway = gateway;
this.receiverInfoV3Model = receiverInfoV3Model;
this.view = view;
}
@Override
public void verifyEmailCode(String emailCode) {
compositeDisposable.add(
this.gateway.verifyEmailCode(
gateway.getAuth(),
gateway.getUserID(),
emailCode,
Constants.REQUEST_FOR_REC_VALUE,
receiverInfoV3Model.getReceiverId())
.doOnSubscribe(subs -> view.showProgressBar(true, ""))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.doFinally(() -> view.showProgressBar(false, ""))
.subscribeWith(new UploadEmailCodeObserver(view::onEmailVerifySuccess)));
}
@Override
public void requestForOtp() {
compositeDisposable.add(
gateway.requestForOtp(
gateway.getAuth(),
gateway.getUserID(),
"",
REQUEST_FOR_REC_VALUE,
receiverInfoV3Model.getReceiverId())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.doOnSubscribe(disposable -> view.showProgressBar(true, getStringfromStringId(R.string.processing_request_for_otp_text)))
.doFinally(() -> view.showProgressBar(false, ""))
.subscribeWith(new RequestEmailCodeObserver(view::showEmailCodePromptDialog))
);
}
@Override
public void onViewReady() {
}
@Override
public void onViewNotReady() {
}
public class UploadEmailCodeObserver extends GenericApiObserverResponseV2<MessageResponseDataModel> {
Runnable task;
public UploadEmailCodeObserver(Runnable task) {
this.task = task;
}
@Override
protected void onSuccess(GenericResponseDataModel<MessageResponseDataModel> t) {
if (t.getErrorCode().equalsIgnoreCase(Constants.SUCCESS_CODE_V2)) {
if (task != null)
task.run();
} else {
if (t.getErrorCode().equalsIgnoreCase(Constants.OPT_EXPIRED_CODE_V2)) {
view.showPopUpMessage(t.getMsg(), CustomAlertDialog.AlertType.FAILED, alertType -> requestForOtp());
} else {
view.showPopUpMessage(t.getMsg(), CustomAlertDialog.AlertType.FAILED, null);
}
}
}
@Override
public void onFailed(String message) {
view.showPopUpMessage(message, CustomAlertDialog.AlertType.FAILED, null);
}
@Override
protected void onConnectionNotEstablished(String message) {
view.showPopUpMessage(message, CustomAlertDialog.AlertType.FAILED, null);
}
@Override
protected void unauthorizedAccess(String message) {
gateway.clearAllUserData();
view.showPopUpMessage(message, CustomAlertDialog.AlertType.ALERT, alertType -> view.logout());
}
}
private class RequestEmailCodeObserver extends GenericApiObserverResponseV2<MessageResponseDataModel> {
Runnable task;
public RequestEmailCodeObserver(Runnable task) {
this.task = task;
}
@Override
protected void onSuccess(GenericResponseDataModel<MessageResponseDataModel> t) {
if (t.getErrorCode().equalsIgnoreCase(Constants.SUCCESS_CODE_V2)) {
if (task != null)
task.run();
} else {
view.showPopUpMessage(t.getMsg(), CustomAlertDialog.AlertType.FAILED, null);
}
}
@Override
public void onFailed(String message) {
view.showPopUpMessage(message, CustomAlertDialog.AlertType.FAILED, null);
}
@Override
protected void onConnectionNotEstablished(String message) {
view.showPopUpMessage(message, CustomAlertDialog.AlertType.FAILED, null);
}
@Override
protected void unauthorizedAccess(String message) {
gateway.clearAllUserData();
view.showPopUpMessage(message, CustomAlertDialog.AlertType.ALERT, alertType -> view.logout());
}
}
}

1
app/src/main/java/com/swifttech/remit/jmecustomer/features/recipientmanagement/presenter/recipientlistingV3/RecipientListingV3PresenterInterface.java

@ -47,6 +47,7 @@ public interface RecipientListingV3PresenterInterface extends BasePresenterInter
void redirectToSendMoney(SendMoneyRequiredDataV3 sendMoneyRequiredDataV3);
void proceedToEditRecipient(ReceiverInfoV3Model recipientInfoModel);
void proceedToShowTermsConditions(ReceiverInfoV3Model recipientInfoModel);
void promptToEditRecipient(GenericPromptDialog.GenericDialogPromptListener genericDialogPromptListener,String message);
}

32
app/src/main/java/com/swifttech/remit/jmecustomer/features/recipientmanagement/view/RecipientTermsViewModelFactory.java

@ -0,0 +1,32 @@
package com.swifttech.remit.jmecustomer.features.recipientmanagement.view;
import androidx.annotation.NonNull;
import androidx.lifecycle.ViewModel;
import androidx.lifecycle.ViewModelProvider;
import com.swifttech.remit.jmecustomer.features.recipientmanagement.gateway.recepientTermsConditions.RecipientTermsGateway;
import com.swifttech.remit.jmecustomer.features.recipientmanagement.model.recipientlistingV3.ReceiverInfoV3Model;
import com.swifttech.remit.jmecustomer.features.recipientmanagement.presenter.recepientTermsConditions.RecipientTermsViewModel;
import com.swifttech.remit.jmecustomer.features.recipientmanagement.view.recepientTermsConditions.RecipientTermsContractInterface;
public class RecipientTermsViewModelFactory implements ViewModelProvider.Factory {
private RecipientTermsContractInterface view;
private ReceiverInfoV3Model receiverInfoV3Model;
public RecipientTermsViewModelFactory(
RecipientTermsContractInterface view,
ReceiverInfoV3Model receiverInfoV3Model
) {
this.view = view;
this.receiverInfoV3Model = receiverInfoV3Model;
}
@SuppressWarnings("unchecked")
@NonNull
@Override
public <T extends ViewModel> T create(@NonNull Class<T> modelClass) {
return (T) new RecipientTermsViewModel(new RecipientTermsGateway(), view, receiverInfoV3Model);
}
}

107
app/src/main/java/com/swifttech/remit/jmecustomer/features/recipientmanagement/view/recepientTermsConditions/BeneficiaryAddEditV3TermsActivity.java

@ -0,0 +1,107 @@
package com.swifttech.remit.jmecustomer.features.recipientmanagement.view.recepientTermsConditions;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.webkit.WebView;
import androidx.lifecycle.ViewModelProvider;
import com.swifttech.remit.jmecustomer.R;
import com.swifttech.remit.jmecustomer.common.customwidgets.common.GenericEditTextPromptDialog;
import com.swifttech.remit.jmecustomer.features.recipientmanagement.model.recipientlistingV3.ReceiverInfoV3Model;
import com.swifttech.remit.jmecustomer.features.recipientmanagement.presenter.recepientTermsConditions.RecipientTermsViewModel;
import com.swifttech.remit.jmecustomer.features.recipientmanagement.view.RecipientTermsViewModelFactory;
import com.swifttech.remit.jmecustomer.features.sendmoney.model.SendMoneyRequiredDataV3;
import com.swifttech.remit.jmecustomer.features.sendmoney.view.SendMoneyRequestSummaryActivity;
import com.swifttech.remit.jmecustomer.features.sendmoney.view.SendMoneyV2Activity;
import com.swifttech.remit.jmecustomer.features.webbrowser.WebBrowserV2Activity;
import com.swifttech.remit.jmecustomer.features.webbrowser.model.WebRequestModel;
import static com.swifttech.remit.jmecustomer.features.recipientmanagement.view.recipientaddeditV3.RecipientAddEditV3Activity.RECIPIENT_INFO_BUNDLE_KEY_v3;
import static com.swifttech.remit.jmecustomer.utils.Constants.JME_BENEFICIARY_TERMS;
public class BeneficiaryAddEditV3TermsActivity extends WebBrowserV2Activity implements GenericEditTextPromptDialog.GenericEditTextPromptListener, RecipientTermsContractInterface {
public static final int RECIPIENT_ACTION_TERMS_REQUEST_CODE_v3 = 21346;
public static String RECIPIENT_TERMS_BUNDLE_KEY_v3 = "recipientInfoKeyV3";
private static String TAG = BeneficiaryAddEditV3TermsActivity.class.getSimpleName();
private String currentLoadedUrl = "";
private ReceiverInfoV3Model selectedBeneficiary;
private RecipientTermsViewModel viewModel;
@Override
protected void doTask(WebRequestModel webRequestModel, WebView webView) {
if (webRequestModel != null && !currentLoadedUrl.equalsIgnoreCase(webRequestModel.getUrl())) {
this.currentLoadedUrl = webRequestModel.getUrl();
updateTitleInBrowser(webRequestModel.getWebTitle() != null && webRequestModel.getWebTitle().length() > 0 ? webRequestModel.getWebTitle() : "");
webView.loadUrl(webRequestModel.getUrl());
Log.d(TAG, currentLoadedUrl);
triggerWebViewEvent(webView);
}
}
private void triggerWebViewEvent(WebView webView) {
}
@Override
protected void proceedButtonClicked() {
viewModel.requestForOtp();
}
@Override
protected void onStart() {
super.onStart();
ivBack.setOnClickListener(this);
}
@Override
protected void onStop() {
super.onStop();
ivBack.setOnClickListener(null);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
selectedBeneficiary = getIntent().getParcelableExtra(RECIPIENT_TERMS_BUNDLE_KEY_v3);
RecipientTermsViewModelFactory recipientTermsViewModelFactory = new RecipientTermsViewModelFactory((RecipientTermsContractInterface) this, selectedBeneficiary);
viewModel = new ViewModelProvider(this, recipientTermsViewModelFactory).get(RecipientTermsViewModel.class);
showAcceptOption(true);
WebRequestModel webRequestModel = new WebRequestModel(getResources().getString(R.string.terms_and_condition_title_text), JME_BENEFICIARY_TERMS, null);
setWebRequestData(webRequestModel);
loadWebView();
}
@Override
public void onEmailCodeNegativeButtonPressed() {
}
@Override
public void onEmailCodePositiveBtnPressed(String emailCode) {
viewModel.verifyEmailCode(emailCode);
}
@Override
public void showEmailCodePromptDialog() {
GenericEditTextPromptDialog genericPromptDialog = new GenericEditTextPromptDialog();
genericPromptDialog.setTitleMessage(getString(R.string.enterCodeFromEmail_text));
genericPromptDialog.setCancellable(false);
genericPromptDialog.setListener(this);
if (!genericPromptDialog.isAdded())
genericPromptDialog.show(getSupportFragmentManager(), "PROMPTEDITTEXT");
}
@Override
public void onEmailVerifySuccess() {
Intent intent = new Intent(this, SendMoneyV2Activity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
intent.putExtra(RECIPIENT_INFO_BUNDLE_KEY_v3, new SendMoneyRequiredDataV3(selectedBeneficiary));
startActivity(intent);
finish();
}
}

9
app/src/main/java/com/swifttech/remit/jmecustomer/features/recipientmanagement/view/recepientTermsConditions/RecipientTermsContractInterface.java

@ -0,0 +1,9 @@
package com.swifttech.remit.jmecustomer.features.recipientmanagement.view.recepientTermsConditions;
import com.swifttech.remit.jmecustomer.base.BaseContractInterface;
public interface RecipientTermsContractInterface extends BaseContractInterface {
void showEmailCodePromptDialog();
void onEmailVerifySuccess();
}

1
app/src/main/java/com/swifttech/remit/jmecustomer/features/recipientmanagement/view/recipientaddeditV3/BeneficiaryAddEditV3Fragment.java

@ -239,6 +239,7 @@ public class BeneficiaryAddEditV3Fragment extends BaseFragment implements Recipi
Intent intent = new Intent(getActivity(), SendMoneyV2Activity.class);
intent.putExtra(RECIPIENT_INFO_BUNDLE_KEY_v3, sendMoneyRequiredDataV3);
startActivity(intent);
getActivity().finish();
}

9
app/src/main/java/com/swifttech/remit/jmecustomer/features/recipientmanagement/view/recipientaddeditV3/BeneficiaryAddEditV3TermsFragment.java

@ -10,7 +10,6 @@ import androidx.lifecycle.ViewModelProvider;
import com.swifttech.remit.jmecustomer.R;
import com.swifttech.remit.jmecustomer.common.customwidgets.common.GenericEditTextPromptDialog;
import com.swifttech.remit.jmecustomer.features.kyc.newCustomer.view.termsAndCondition.NewKycTermsAndConditionFragment;
import com.swifttech.remit.jmecustomer.features.recipientmanagement.model.recipientlistingV3.ReceiverInfoV3Model;
import com.swifttech.remit.jmecustomer.features.recipientmanagement.presenter.recipientaddeditV3.RecipientAddEditBaseV3ViewModel;
import com.swifttech.remit.jmecustomer.features.recipientmanagement.presenter.recipientaddeditV3.RecipientAddV3ContractInterface;
@ -27,7 +26,7 @@ import static com.swifttech.remit.jmecustomer.utils.Constants.JME_BENEFICIARY_TE
public class BeneficiaryAddEditV3TermsFragment extends WebBrowserFragmentV2 implements RecipientAddV3ContractInterface.RecipientTermsAndConditionsContract, GenericEditTextPromptDialog.GenericEditTextPromptListener {
private RecipientAddEditBaseV3ViewModel viewModel;
private ReceiverInfoV3Model recipientToBeEdited;
private static String TAG = NewKycTermsAndConditionFragment.class.getSimpleName();
private static String TAG = BeneficiaryAddEditV3TermsFragment.class.getSimpleName();
private String currentLoadedUrl = "";
@Override
@ -35,12 +34,12 @@ public class BeneficiaryAddEditV3TermsFragment extends WebBrowserFragmentV2 impl
if (webRequestModel != null && !currentLoadedUrl.equalsIgnoreCase(webRequestModel.getUrl())) {
this.currentLoadedUrl = webRequestModel.getUrl();
webView.loadUrl(webRequestModel.getUrl());
Log.d(this.getClass().getSimpleName(), currentLoadedUrl);
triggerWebviewEvent(webView);
Log.d(TAG, currentLoadedUrl);
triggerWebViewEvent(webView);
}
}
private void triggerWebviewEvent(WebView webView) {
private void triggerWebViewEvent(WebView webView) {
}

17
app/src/main/java/com/swifttech/remit/jmecustomer/features/recipientmanagement/view/recipientlistingV3/RecipientListingV3Activity.java

@ -27,6 +27,7 @@ import com.swifttech.remit.jmecustomer.features.recipientmanagement.gateway.reci
import com.swifttech.remit.jmecustomer.features.recipientmanagement.model.recipientlistingV3.ReceiverInfoV3Model;
import com.swifttech.remit.jmecustomer.features.recipientmanagement.presenter.recipientlistingV3.RecipientListingV3Presenter;
import com.swifttech.remit.jmecustomer.features.recipientmanagement.presenter.recipientlistingV3.RecipientListingV3PresenterInterface;
import com.swifttech.remit.jmecustomer.features.recipientmanagement.view.recepientTermsConditions.BeneficiaryAddEditV3TermsActivity;
import com.swifttech.remit.jmecustomer.features.recipientmanagement.view.recipientaddeditV3.RecipientAddEditV3Activity;
import com.swifttech.remit.jmecustomer.features.sendmoney.model.SendMoneyRequiredDataV3;
import com.swifttech.remit.jmecustomer.features.sendmoney.view.SendMoneyV2Activity;
@ -220,10 +221,9 @@ public class RecipientListingV3Activity extends BaseActivity
@Override
public void redirectToSendMoney(SendMoneyRequiredDataV3 sendMoneyRequiredDataV3) {
Intent intent = new Intent(RecipientListingV3Activity.this, SendMoneyV2Activity.class);
intent.putExtra(RecipientAddEditV3Activity.RECIPIENT_INFO_BUNDLE_KEY_v3, sendMoneyRequiredDataV3);
startActivity(intent);
startActivityForResult(intent, RecipientAddEditV3Activity.RECIPIENT_ACTION_EDIT_REQUEST_CODE_v3);
}
@ -234,6 +234,14 @@ public class RecipientListingV3Activity extends BaseActivity
startActivityForResult(intent, RecipientAddEditV3Activity.RECIPIENT_ACTION_EDIT_REQUEST_CODE_v3);
}
@Override
public void proceedToShowTermsConditions(ReceiverInfoV3Model recipientInfoModel) {
Intent intent = new Intent(getApplicationContext(), BeneficiaryAddEditV3TermsActivity.class);
intent.putExtra(BeneficiaryAddEditV3TermsActivity.RECIPIENT_TERMS_BUNDLE_KEY_v3, recipientInfoModel);
startActivityForResult(intent, RecipientAddEditV3Activity.RECIPIENT_ACTION_EDIT_REQUEST_CODE_v3);
}
@Override
public void promptToEditRecipient(GenericPromptDialog.GenericDialogPromptListener genericDialogPromptListener, String message) {
GenericPromptDialog genericPromptDialog = new GenericPromptDialog();
@ -251,9 +259,8 @@ public class RecipientListingV3Activity extends BaseActivity
if (recipientInfoModel.getHasVerifiedOTP()) {
this.presenter.saveSelectedRecipientInfomation(recipientInfoModel);
} else {
this.presenter.requestForOtp(recipientInfoModel);
proceedToShowTermsConditions(recipientInfoModel);
}
}
@Override
@ -326,4 +333,6 @@ public class RecipientListingV3Activity extends BaseActivity
alert.getButton(DialogInterface.BUTTON_NEGATIVE).setTextColor(ContextCompat.getColor(this, R.color.black));
alert.getButton(DialogInterface.BUTTON_POSITIVE).setTextColor(ContextCompat.getColor(this, R.color.colorPrimary));
}
}

41
app/src/main/java/com/swifttech/remit/jmecustomer/features/sendmoney/view/SendMoneyV2Activity.java

@ -16,10 +16,11 @@ import com.swifttech.remit.jmecustomer.R;
import com.swifttech.remit.jmecustomer.base.BaseActivity;
import com.swifttech.remit.jmecustomer.base.BaseFragment;
import com.swifttech.remit.jmecustomer.common.view.AnswerInputDialog;
import com.swifttech.remit.jmecustomer.features.recipientmanagement.view.recipientlistingV3.RecipientListingV3Activity;
import com.swifttech.remit.jmecustomer.features.sendmoney.SendMoneyViewModelFactory;
import com.swifttech.remit.jmecustomer.features.sendmoney.model.SendMoneyRequiredDataV3;
import com.swifttech.remit.jmecustomer.features.sendmoney.presenter.SendMoneyV2ViewModel;
import com.swifttech.remit.jmecustomer.features.sendmoney.presenter.SendMoneyV2PresenterInterface;
import com.swifttech.remit.jmecustomer.features.sendmoney.presenter.SendMoneyV2ViewModel;
import com.swifttech.remit.jmecustomer.features.webbrowser.WebBrowserFragmentV2;
import butterknife.BindView;
@ -30,29 +31,21 @@ import static com.swifttech.remit.jmecustomer.features.recipientmanagement.view.
public class SendMoneyV2Activity extends BaseActivity implements SendMoneyActionListener, SendMoneyV2PresenterInterface.SendMoneyV2ContractInterface, WebBrowserFragmentV2.WebBrowserFragmentActionListener, View.OnClickListener {
private static final int PASSWORD_PROMPT_REQUEST = 43266;
private FragmentManager fragmentManager;
private SendMoneyV2PresenterInterface presenter;
public static String RECIPIENT_DATA = "recipientData";
@BindView(R.id.page1TxtView)
TextView page1TxtView;
@BindView(R.id.page2TxtView)
TextView page2TxtView;
@BindView(R.id.page3TxtView)
TextView page3TxtView;
@BindView(R.id.page4TxtView)
TextView page4TxtView;
@BindView(R.id.iv_back)
View iv_back;
@BindView(R.id.iv_cancel)
View iv_cancel;
public static String RECIPIENT_DATA = "recipientData";
private FragmentManager fragmentManager;
private SendMoneyV2PresenterInterface presenter;
private SendMoneyScreenManager sendMoneyScreenManager;
private SendMoneyRequiredDataV3 sendMoneyRequiredData;
@ -71,7 +64,6 @@ public class SendMoneyV2Activity extends BaseActivity implements SendMoneyAction
private void performDefaultAction(Bundle savedInstanceState) {
if (savedInstanceState == null) {
try {
sendMoneyRequiredData = getIntent().getExtras().getParcelable(RECIPIENT_INFO_BUNDLE_KEY_v3);
@ -83,19 +75,19 @@ public class SendMoneyV2Activity extends BaseActivity implements SendMoneyAction
sendMoneyRequiredData = savedInstanceState.getParcelable(RECIPIENT_DATA);
}
SendMoneyViewModelFactory factory=new SendMoneyViewModelFactory(this,sendMoneyRequiredData);
presenter= ViewModelProviders.of(this, factory).get(SendMoneyV2ViewModel.class);
SendMoneyViewModelFactory factory = new SendMoneyViewModelFactory(this, sendMoneyRequiredData);
presenter = ViewModelProviders.of(this, factory).get(SendMoneyV2ViewModel.class);
addScreenToSendMoneyOnly(R.layout.fragment_amount_detail_send_money_v2, false);
}
public SendMoneyRequiredDataV3 getSendMoneyRequiredData(){
public SendMoneyRequiredDataV3 getSendMoneyRequiredData() {
return sendMoneyRequiredData;
}
private void initialize() {
sendMoneyScreenManager=new SendMoneyScreenManager();
sendMoneyScreenManager = new SendMoneyScreenManager();
}
@ -283,11 +275,8 @@ public class SendMoneyV2Activity extends BaseActivity implements SendMoneyAction
public void onClick(View v) {
switch (v.getId()) {
case R.id.iv_back:
onBackPressed();
break;
case R.id.iv_cancel:
finish();
onBackPressed();
break;
}
@ -296,11 +285,13 @@ public class SendMoneyV2Activity extends BaseActivity implements SendMoneyAction
@Override
public void onBackPressed() {
hideKeyBoard();
super.onBackPressed();
Intent intent = new Intent(this, RecipientListingV3Activity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
finish();
}
@Override
public void showReceiptOnTransactionComplete(String transactionId) {
Intent startReceiptActivity = new Intent(this, SendMoneyRequestSummaryActivity.class);
@ -313,9 +304,9 @@ public class SendMoneyV2Activity extends BaseActivity implements SendMoneyAction
@Override
public void updateFinalTransitionToValid(boolean action) {
if (action){
if (action) {
setBlueBg(page4TxtView);
}else{
} else {
setRedBg(page4TxtView);
}

5
app/src/main/java/com/swifttech/remit/jmecustomer/features/sendmoney/view/verification/TermsAndConditionV2BrowserActivity.java

@ -15,4 +15,9 @@ public class TermsAndConditionV2BrowserActivity extends WebBrowserV2Activity {
}
}
@Override
protected void proceedButtonClicked() {
}
}

100
app/src/main/java/com/swifttech/remit/jmecustomer/features/webbrowser/WebBrowserV2Activity.java

@ -13,6 +13,7 @@ import android.net.Uri;
import android.net.http.SslError;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.webkit.CookieManager;
import android.webkit.JsResult;
@ -24,9 +25,14 @@ import android.webkit.WebResourceRequest;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import androidx.appcompat.widget.AppCompatCheckBox;
import androidx.core.widget.NestedScrollView;
import com.swifttech.remit.jmecustomer.R;
import com.swifttech.remit.jmecustomer.common.customwidgets.GmeButton;
import com.swifttech.remit.jmecustomer.features.webbrowser.model.WebRequestModel;
import com.swifttech.remit.jmecustomer.base.BaseActivity;
import com.swifttech.remit.jmecustomer.common.customwidgets.CustomAlertDialog;
@ -40,7 +46,7 @@ import butterknife.ButterKnife;
public abstract class WebBrowserV2Activity extends BaseActivity implements View.OnClickListener {
@BindView(R.id.iv_back)
View iv_back;
protected View ivBack;
@BindView(R.id.toolbar_title)
GmeTextView toolbarTitle;
@ -50,6 +56,21 @@ public abstract class WebBrowserV2Activity extends BaseActivity implements View
@BindView(R.id.progressBar)
ProgressBar progressBar;
@BindView(R.id.nestedScrollView)
NestedScrollView nestedScrollView;
@BindView(R.id.checkBoxAgreeConsent)
AppCompatCheckBox checkBoxAgreeConsent;
@BindView(R.id.btnProceed)
GmeButton btnProceed;
@BindView(R.id.llBottom)
LinearLayout llBottom;
private String requestUrl;
private boolean isPageLoadSuccess = false;
private boolean showAcceptOption = false;
private GMEWebViewClient gmeWebViewClient;
private RemitChromeClient remitChromeClient;
@ -64,6 +85,10 @@ public abstract class WebBrowserV2Activity extends BaseActivity implements View
protected abstract void doTask(WebRequestModel webRequestModel,WebView webView);
protected abstract void proceedButtonClicked();
private static final String TAG = WebBrowserV2Activity.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@ -91,25 +116,38 @@ public abstract class WebBrowserV2Activity extends BaseActivity implements View
protected void updateTitleInBrowser(String title)
{
// toolbarTitle.setText(webRequestModel.getWebTitle()!=null&&webRequestModel.getWebTitle().length()>0?webRequestModel.getWebTitle():"");
toolbarTitle.setText(title);
}
private void init() {
//Setup presenter here
setupWebView();
initViews();
}
private void initViews() {
checkBoxAgreeConsent.setOnCheckedChangeListener((buttonView, isChecked) -> btnProceed.setEnabled(isChecked));
btnProceed.setOnClickListener(this);
}
public void showAcceptOption(boolean showAcceptOption) {
this.showAcceptOption = showAcceptOption;
}
public void setButtonText(String btnLabel) {
btnProceed.setText(btnLabel);
}
@Override
protected void onStart() {
super.onStart();
iv_back.setOnClickListener(this);
ivBack.setOnClickListener(this);
}
@Override
protected void onStop() {
super.onStop();
iv_back.setOnClickListener(null);
ivBack.setOnClickListener(null);
}
protected void showProgressBar(boolean action, Runnable callback) {
@ -209,15 +247,59 @@ public abstract class WebBrowserV2Activity extends BaseActivity implements View
settings.setSupportMultipleWindows(true);
settings.setJavaScriptCanOpenWindowsAutomatically(true);
webView.getSettings().setAllowFileAccess(true);
nestedScrollView.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() {
@Override
public void onScrollChange(NestedScrollView scrollView, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
if (scrollY > oldScrollY) {
Log.i(TAG, "Scroll DOWN");
}
if (scrollY < oldScrollY) {
Log.i(TAG, "Scroll UP");
}
if (scrollY == 0) {
Log.i(TAG, "TOP SCROLL");
}
View view = scrollView.getChildAt(scrollView.getChildCount() - 1);
int diff = (view.getBottom() - (scrollView.getHeight() + scrollView.getScrollY()));
Log.d(TAG, "onScrollChange: " + diff);
// if diff is zero, then the bottom has been reached
if (diff == 0 && showAcceptOption == true && isPageLoadSuccess == true) {
Log.i(TAG, diff + " is true ");
llBottom.setVisibility(View.VISIBLE);
} else {
Log.i(TAG, diff + " " + showAcceptOption + " " + isPageLoadSuccess);
}
}
});
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
CookieManager.getInstance().setAcceptThirdPartyCookies(webView, true);
}
StringBuffer sb = new StringBuffer(webView.getSettings().getUserAgentString()).append(STR_USER_AGENT_YESSIGN_ANDROID);
webView.getSettings().setUserAgentString(sb.toString());
}
public void setWebRequestData(WebRequestModel webRequestModel) {
this.webRequestModel = webRequestModel;
requestUrl = webRequestModel.getUrl();
}
public void loadWebView() {
if (webRequestModel != null) {
isPageLoadSuccess = false;
doTask(webRequestModel, webView);
}
}
@Override
public void onBackPressed() {
if (webView.canGoBack())
@ -232,6 +314,9 @@ public abstract class WebBrowserV2Activity extends BaseActivity implements View
case R.id.iv_back:
onBackPressed();
break;
case R.id.btnProceed:
proceedButtonClicked();
break;
}
}
@ -347,6 +432,7 @@ public abstract class WebBrowserV2Activity extends BaseActivity implements View
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
if (webView.getProgress() == 100) {
isPageLoadSuccess=true;
showProgressBar(false, () -> {
if (webView.getVisibility() != View.VISIBLE)
webView.setVisibility(View.VISIBLE);
@ -366,7 +452,7 @@ public abstract class WebBrowserV2Activity extends BaseActivity implements View
errorMessage = getProperErrorMessage(error.getErrorCode());
else
errorMessage = HTTPConstants.HTTP_RESPONSE_UNKNOWN;
toolbarTitle.setText(errorMessage);
// toolbarTitle.setText(errorMessage);
showPopUpMessage(errorMessage, CustomAlertDialog.AlertType.FAILED, alert -> exitView());
}
@ -395,8 +481,8 @@ public abstract class WebBrowserV2Activity extends BaseActivity implements View
private class RemitChromeClient extends WebChromeClient {
@Override
public void onReceivedTitle(WebView view, String title) {
if (webView.getVisibility() == View.VISIBLE)
toolbarTitle.setText(title);
if (webView.getVisibility() == View.VISIBLE){}
// toolbarTitle.setText(title);
}
@Override

107
app/src/main/res/layout/activity_web_browser_v2.xml

@ -1,75 +1,120 @@
<?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"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="@color/background_gray"
android:orientation="vertical">
<LinearLayout
android:id="@+id/include"
android:layout_width="match_parent"
android:layout_height="?actionBarSize"
android:background="@color/white"
android:orientation="horizontal"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:layout_width="match_parent"
android:layout_height="?actionBarSize"
android:orientation="horizontal">
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:id="@+id/iv_back"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:padding="10dp"
android:layout_marginEnd="8dp"
android:padding="10dp"
app:srcCompat="@drawable/icv_back" />
<com.swifttech.remit.jmecustomer.common.customwidgets.GmeTextView
android:id="@+id/toolbar_title"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_marginEnd="5dp"
android:layout_height="match_parent"
android:textColor="@color/black"
android:textSize="17sp"
android:layout_marginEnd="5dp"
android:layout_weight="1"
android:gravity="center_vertical"
android:maxLines="1"
android:gravity="center_vertical" />
android:textColor="@color/black"
android:textSize="17sp" />
<ProgressBar
android:layout_gravity="center"
android:id="@+id/progressBar"
android:visibility="invisible"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="center"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="15dp"
android:layout_marginBottom="8dp"
/>
android:visibility="invisible" />
</LinearLayout>
<WebView
android:id="@+id/webView"
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:layout_margin="0dp"
android:background="@color/m_layout_bg_color"
android:orientation="vertical"
android:padding="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/include" />
app:layout_constraintTop_toBottomOf="@+id/include">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<!--<ProgressBar-->
<!--jmecustomer:id="@+id/progressBar"-->
<!--jmecustomer:layout_width="wrap_content"-->
<!--jmecustomer:layout_height="wrap_content"-->
<!--jmecustomer:layout_marginStart="8dp"-->
<!--jmecustomer:layout_marginTop="8dp"-->
<!--jmecustomer:layout_marginEnd="8dp"-->
<!--jmecustomer:layout_marginBottom="8dp"-->
<!--app:layout_constraintBottom_toBottomOf="parent"-->
<!--app:layout_constraintEnd_toEndOf="@+id/include"-->
<!--app:layout_constraintStart_toStartOf="parent"-->
<!--app:layout_constraintTop_toTopOf="@+id/webView" />-->
<androidx.core.widget.NestedScrollView
android:id="@+id/nestedScrollView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/llBottom"
android:fillViewport="true"
android:scrollbars="none">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:nestedScrollingEnabled="false" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
<LinearLayout
android:id="@+id/llBottom"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginTop="@dimen/commonMargin"
android:orientation="vertical"
android:visibility="gone">
<androidx.appcompat.widget.AppCompatCheckBox
android:id="@+id/checkBoxAgreeConsent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/btnSendMoney"
android:layout_marginLeft="@dimen/commonMargin"
android:layout_marginRight="@dimen/commonMargin"
android:fontFamily="@font/lato_regular"
android:text="@string/i_have_read_to_text_consent" />
<com.swifttech.remit.jmecustomer.common.customwidgets.GmeButton
android:id="@+id/btnProceed"
style="@style/MButton"
android:layout_alignParentBottom="true"
android:layout_gravity="center"
android:layout_margin="@dimen/commonMargin"
android:layout_marginTop="@dimen/_15sdp"
android:text="@string/proceed_text" />
</LinearLayout>
</RelativeLayout>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

9
app/src/main/res/layout/beneficiary_add_edit_v3_terms_activity.xml

@ -0,0 +1,9 @@
<?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="match_parent"
tools:context=".features.recipientmanagement.view.recepientTermsConditions.BeneficiaryAddEditV3TermsActivity">
</androidx.constraintlayout.widget.ConstraintLayout>

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

@ -9,7 +9,7 @@
<!--fonts-->
<!-- <string name="regular" translatable="false">san_francisco_text_regular.otf</string>
<!-- <string name="regular" translatable="false">san_francisco_text_regular.otf</string>
<string name="semibold" translatable="false">san_francisco_text_semibold.otf</string>
<string name="bold" translatable="false">san_francisco_text_bold.otf</string>
<string name="heavy" translatable="false">san_francisco_text_heavy.otf</string>-->

Loading…
Cancel
Save