From bba8d68055026086c8b4338c68177b1dbc6eb580 Mon Sep 17 00:00:00 2001 From: gary Date: Tue, 18 Aug 2020 20:10:26 +0545 Subject: [PATCH] HomePresenter converted to HomeViewModel --- .../remit/android/base/PrivilegedGateway.java | 1 + .../android/features/home/HomeViewModel.java | 266 ++++++++++++++++++ .../features/home/HomeViewModelFactory.java | 30 ++ .../home/presenter/HomeV2Presenter.java | 5 +- .../presenter/HomeV2PresenterInterface.java | 10 - .../features/home/view/HomeActivityV2.java | 44 +-- .../features/home/view/HomeFragmentV2.java | 12 +- .../newCustomer/KYCV3ViewModelFactory.java | 5 +- .../layout/activity_splash_screen_key_0.xml | 1 - .../layout/activity_splash_screen_key_1.xml | 1 - app/src/main/res/values/styles.xml | 53 ++-- 11 files changed, 365 insertions(+), 63 deletions(-) create mode 100644 app/src/main/java/com/swifttech/remit/android/features/home/HomeViewModel.java create mode 100644 app/src/main/java/com/swifttech/remit/android/features/home/HomeViewModelFactory.java diff --git a/app/src/main/java/com/swifttech/remit/android/base/PrivilegedGateway.java b/app/src/main/java/com/swifttech/remit/android/base/PrivilegedGateway.java index 368034ea..51fa69f7 100644 --- a/app/src/main/java/com/swifttech/remit/android/base/PrivilegedGateway.java +++ b/app/src/main/java/com/swifttech/remit/android/base/PrivilegedGateway.java @@ -194,6 +194,7 @@ public abstract class PrivilegedGateway extends BaseGateway implements Privilege sharedPreferenceEditor.putString(PrefKeys.USER_REWAD_POINT, loginApiResponseModelV2.getRewardPoint()); sharedPreferenceEditor.commit(); + if (privilegedGatewayDataObserverManager != null) privilegedGatewayDataObserverManager.broadcastUserRelatedDataUpdateEvent(); } diff --git a/app/src/main/java/com/swifttech/remit/android/features/home/HomeViewModel.java b/app/src/main/java/com/swifttech/remit/android/features/home/HomeViewModel.java new file mode 100644 index 00000000..e64cfaa6 --- /dev/null +++ b/app/src/main/java/com/swifttech/remit/android/features/home/HomeViewModel.java @@ -0,0 +1,266 @@ +package com.swifttech.remit.android.features.home; + +import android.util.Log; + +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; + +import com.google.firebase.iid.FirebaseInstanceId; +import com.swifttech.remit.android.BuildConfig; +import com.swifttech.remit.android.R; +import com.swifttech.remit.android.RemitApplication; +import com.swifttech.remit.android.base.BaseViewModel; +import com.swifttech.remit.android.common.customwidgets.CustomAlertDialog; +import com.swifttech.remit.android.features.home.model.AppUpdateModel; +import com.swifttech.remit.android.features.home.model.HomeNotificationViewDTO; +import com.swifttech.remit.android.features.home.model.HomeViewRelatedDTOV2; +import com.swifttech.remit.android.features.home.model.UserInfoModelV2; +import com.swifttech.remit.android.features.home.presenter.HomeNotificationHandler; +import com.swifttech.remit.android.features.home.presenter.HomeV2InteractorInterface; +import com.swifttech.remit.android.features.home.presenter.HomeV2PresenterInterface; +import com.swifttech.remit.android.utils.Constants; +import com.swifttech.remit.android.utils.https.HTTPConstants; +import com.swifttech.remit.android.utils.https.SessionExpiredException; +import com.swifttech.remit.android.utils.https.UserSessionObserverResponse; + +import java.util.concurrent.TimeUnit; + +import io.reactivex.Observable; +import io.reactivex.ObservableSource; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.disposables.CompositeDisposable; +import io.reactivex.functions.Function; +import io.reactivex.schedulers.Schedulers; +import retrofit2.HttpException; + +public class HomeViewModel extends BaseViewModel implements HomeV2PresenterInterface { + private final HomeV2ContractInterface view; + private final HomeV2InteractorInterface.HomeV2GatewayInterface gateway; + private final boolean shouldCheckFingerprintPrompt; + private final CompositeDisposable compositeDisposable; + private boolean shouldNotPromptAppUpdate; + + public HomeViewModel(HomeV2ContractInterface view, + HomeV2InteractorInterface.HomeV2GatewayInterface gateway, + boolean shouldCheckFingerprintPrompt) { + this.view = view; + this.gateway = gateway; + this.compositeDisposable = new CompositeDisposable(); + this.shouldNotPromptAppUpdate = false; + this.shouldCheckFingerprintPrompt = shouldCheckFingerprintPrompt; + homeRelatedMutableLiveData = new MutableLiveData<>(); + + } + + private MutableLiveData homeRelatedMutableLiveData; + @Override + public void getRequiredData() { + compositeDisposable.add( + Observable.concat(getDataFromServerAndSaveIt().timeout(25, TimeUnit.SECONDS).onErrorResumeNext(new Function>() { + @Override + public ObservableSource apply(Throwable throwable) throws Exception { + if (throwable instanceof SessionExpiredException) + return Observable.error(throwable); + else if (throwable instanceof HttpException && ((HttpException) throwable).code() == 401) + return Observable.error(new SessionExpiredException(HTTPConstants.getErrorMessageFromCode(((HttpException) throwable).code()))); + else + return Observable.empty(); + } + }), + this.gateway.getCachedUserInfoFromDB()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .take(1) + .subscribeWith(new UserInfoObserver())); + + } + + @Override + public void getRequiredCachedData() { + compositeDisposable.add( + this.gateway.getCachedUserInfoFromDB() + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribeWith(new UserInfoObserver()) + ); + } + + @Override + public void clearAllData() { + this.gateway.clearAllUserData(); + } + + @Override + public String checkIfUserVerified() { + String resultMessage = null; + String pennyTestStatus = gateway.getPennyTestStatus(); + if (!gateway.hasUserSubmittedKYC()) + resultMessage = getStringfromStringId(R.string.complete_your_registration_text); + else if (pennyTestStatus != null && pennyTestStatus.length() > 0 && !pennyTestStatus.equalsIgnoreCase("2")) + resultMessage = getStringfromStringId(R.string.complete_penny_test); + else if (!gateway.isUserKYCVerified()) + resultMessage = getStringfromStringId(R.string.verification_in_aproval_process_text); + + return resultMessage; + + } + + @Override + public void storeAppUpdateDecision(boolean booleanExtra) { + this.shouldNotPromptAppUpdate = booleanExtra; + } + + @Override + public boolean shouldNotPromptAppUpdate() { + return this.shouldNotPromptAppUpdate; + } + + @Override + public void checkIfFingerprintPromptShouldBeShown() { + //TODO disable fingerprint +// if (shouldCheckFingerprintPrompt) { +// if (!gateway.hasPromptedUserForFingerprintFirstTime() && SecurityUtils.checkFingerPrintUsablity(view.getContext()) && !gateway.isFingerPrintAuthEnabled() && gateway.getPersistedUserId() != null && gateway.getPersistedUserPwd() != null) +// view.showFingerprintAvailablityToUser(); +// +// } + } + + @Override + public LiveData subscribeToHomeRelatedDataEvent() { + return homeRelatedMutableLiveData; + } + + @Override + public HomeNotificationViewDTO constructKYCVerificationRequiredViewNotification() { + return HomeNotificationHandler.generateNotificationFromType(RemitApplication.getStringExtractor(), HomeNotificationHandler.HomeNoticeViewTypeEnum.KYC_NOT_VERIFIED); + } + + @Override + public void onViewReady() { + + } + + @Override + public void onViewNotReady() { + + } + @Override + public void onViewDestroyed() { + super.onViewDestroyed(); + if (compositeDisposable != null && !compositeDisposable.isDisposed()) + compositeDisposable.dispose(); + } + + private Observable getDataFromServerAndSaveIt() { + String fcmID; + try { + fcmID = FirebaseInstanceId.getInstance().getToken(); + } catch (Exception e) { + fcmID = null; + } + + if (fcmID == null || fcmID.length() < 1) + fcmID = this.gateway.getLastKnownFcmId(); + RemitApplication.AppRelatedMetaData appRelatedMetaData = RemitApplication.getAppRelatedMetaData(view.getContext()); + return this.gateway.getUserRelatedData(this.gateway.getAuth(), + this.gateway.getUserID(), + fcmID, + appRelatedMetaData.getAppVersion(), + appRelatedMetaData.getPhoneBrand(), + appRelatedMetaData.getOsName(), + appRelatedMetaData.getDeviceId(), + appRelatedMetaData.getOsVersion() + ).flatMap(userInfoV2DataApiResponse -> { + if (userInfoV2DataApiResponse.getErrorCode().equalsIgnoreCase(Constants.SUCCESS_CODE_V2)) { + + return this.gateway.saveUserInfo(userInfoV2DataApiResponse.getData()); + } else + return Observable.error(new SessionExpiredException(userInfoV2DataApiResponse.getMsg())); + }); + } + + public class UserInfoObserver extends UserSessionObserverResponse { + + @Override + protected void onSuccess(UserInfoModelV2 userInfoModelV2) { + + + String fullName = userInfoModelV2.getFirstName(); + + + view.showInfoInDrawer(fullName, userInfoModelV2.getCustomerEmail(), userInfoModelV2.getYearlyLimit(), userInfoModelV2.getWalletNumber(), userInfoModelV2.getPrimaryBankName(), userInfoModelV2.getMobileNumber()); + + + boolean shouldShowTermsAndCondition = "0".equalsIgnoreCase(userInfoModelV2.getAgreeYn()); + + + HomeNotificationViewDTO notificationViewDTO = new HomeNotificationHandler( + RemitApplication.getStringExtractor(), + userInfoModelV2.getKyc(), + userInfoModelV2.isVerified(), + userInfoModelV2.getPennyTestStatus(), + userInfoModelV2.getRedirectTo(), + shouldShowTermsAndCondition) + .generateAppropriateHomeNotificationViewDTO(); + + + homeRelatedMutableLiveData.setValue( + new HomeViewRelatedDTOV2( + fullName, + userInfoModelV2.getAvailableBalance(), + userInfoModelV2.getYearlyLimit(), + userInfoModelV2.getRewardPoint(), + userInfoModelV2.getPrimaryBankName(), + userInfoModelV2.getWalletNumber(), + notificationViewDTO, + shouldShowTermsAndCondition + )); + + //If no notification is generated then we can show privileged Operation View + view.showPrivilegedOperationView(notificationViewDTO == null || notificationViewDTO.shouldShowPrivilegedView()); + + AppUpdateModel androidAppUpdateModel = null; + if (userInfoModelV2.getAppUpdate() != null) + for (AppUpdateModel model : userInfoModelV2.getAppUpdate()) { + if (model.getOS().equalsIgnoreCase("ANDROID")) + androidAppUpdateModel = model; + } +// checkIfUpdateIsRequired(androidAppUpdateModel); + + } + + @Override + public void onFailed(String message) { + Log.d("DashBoardError", "Recieved Error : " + message); + } + + @Override + protected void onConnectionNotEstablished(String message) { + Log.d("DashBoardError", "Recieved Error : " + message); + } + + @Override + protected void onSessionExpired(String message) { + view.showPopUpMessage(message, CustomAlertDialog.AlertType.ALERT, alertType -> { + view.performLogout(); + }); + } + } + + private void checkIfUpdateIsRequired(AppUpdateModel androidAppUpdateModel) { + if (androidAppUpdateModel == null) + return; + try { + int playStoreBuildNumber = Integer.parseInt(androidAppUpdateModel.getBuild()); + if (playStoreBuildNumber > BuildConfig.VERSION_CODE) { + if (androidAppUpdateModel.getInfo() != null && androidAppUpdateModel.getInfo().length() < 1) + androidAppUpdateModel.setInfo(null); + boolean isForceUpdate = androidAppUpdateModel.getCritical().equalsIgnoreCase("Y"); + if (isForceUpdate) + view.showUpdateScreen(androidAppUpdateModel.getBuild(), androidAppUpdateModel.getInfo(), true); + } + } catch (Exception e) { + return; + } + } +} diff --git a/app/src/main/java/com/swifttech/remit/android/features/home/HomeViewModelFactory.java b/app/src/main/java/com/swifttech/remit/android/features/home/HomeViewModelFactory.java new file mode 100644 index 00000000..3e87a2f2 --- /dev/null +++ b/app/src/main/java/com/swifttech/remit/android/features/home/HomeViewModelFactory.java @@ -0,0 +1,30 @@ +package com.swifttech.remit.android.features.home; + +import androidx.annotation.NonNull; +import androidx.lifecycle.ViewModel; +import androidx.lifecycle.ViewModelProvider; + +import com.swifttech.remit.android.features.home.presenter.HomeV2InteractorInterface; +import com.swifttech.remit.android.features.home.presenter.HomeV2PresenterInterface; + +public class HomeViewModelFactory implements ViewModelProvider.Factory { + private final HomeV2PresenterInterface.HomeV2ContractInterface view; + private final HomeV2InteractorInterface.HomeV2GatewayInterface gateway; + private final boolean shouldCheckFingerprintPrompt; + + public HomeViewModelFactory( + HomeV2PresenterInterface.HomeV2ContractInterface view, + HomeV2InteractorInterface.HomeV2GatewayInterface gateway, + boolean shouldCheckFingerprintPrompt) { + this.view = view; + this.gateway=gateway; + this.shouldCheckFingerprintPrompt=shouldCheckFingerprintPrompt; + } + + @SuppressWarnings("unchecked") + @NonNull + @Override + public T create(@NonNull Class modelClass) { + return (T) new HomeViewModel(view,gateway,shouldCheckFingerprintPrompt); + } +} diff --git a/app/src/main/java/com/swifttech/remit/android/features/home/presenter/HomeV2Presenter.java b/app/src/main/java/com/swifttech/remit/android/features/home/presenter/HomeV2Presenter.java index 0935a0b3..9da76f2c 100644 --- a/app/src/main/java/com/swifttech/remit/android/features/home/presenter/HomeV2Presenter.java +++ b/app/src/main/java/com/swifttech/remit/android/features/home/presenter/HomeV2Presenter.java @@ -42,7 +42,8 @@ public class HomeV2Presenter extends BasePresenter implements HomeV2PresenterInt private MutableLiveData homeRelatedMutableLiveData; public HomeV2Presenter(HomeV2ContractInterface view, - HomeV2GatewayInterface gateway, boolean checkFingerprintPromptScreen) { + HomeV2GatewayInterface gateway, + boolean checkFingerprintPromptScreen) { this.view = view; this.gateway = gateway; this.compositeDisposable = new CompositeDisposable(); @@ -169,6 +170,8 @@ public class HomeV2Presenter extends BasePresenter implements HomeV2PresenterInt @Override public void onUserRelatedDataUpdated() { getRequiredCachedData(); + //Todo keep this feature in ViewModel too + } @Override diff --git a/app/src/main/java/com/swifttech/remit/android/features/home/presenter/HomeV2PresenterInterface.java b/app/src/main/java/com/swifttech/remit/android/features/home/presenter/HomeV2PresenterInterface.java index d3982753..806ef32e 100644 --- a/app/src/main/java/com/swifttech/remit/android/features/home/presenter/HomeV2PresenterInterface.java +++ b/app/src/main/java/com/swifttech/remit/android/features/home/presenter/HomeV2PresenterInterface.java @@ -19,13 +19,8 @@ public interface HomeV2PresenterInterface extends BasePresenterInterface { void clearAllData(); - - String checkIfUserVerified(); - - - void storeAppUpdateDecision(boolean booleanExtra); boolean shouldNotPromptAppUpdate(); @@ -33,11 +28,6 @@ public interface HomeV2PresenterInterface extends BasePresenterInterface { void checkIfFingerprintPromptShouldBeShown(); - - - - - LiveData subscribeToHomeRelatedDataEvent(); diff --git a/app/src/main/java/com/swifttech/remit/android/features/home/view/HomeActivityV2.java b/app/src/main/java/com/swifttech/remit/android/features/home/view/HomeActivityV2.java index 9b687d59..91d55cd0 100644 --- a/app/src/main/java/com/swifttech/remit/android/features/home/view/HomeActivityV2.java +++ b/app/src/main/java/com/swifttech/remit/android/features/home/view/HomeActivityV2.java @@ -23,6 +23,7 @@ import androidx.core.content.ContextCompat; import androidx.drawerlayout.widget.DrawerLayout; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; +import androidx.lifecycle.ViewModelProvider; import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.google.android.material.navigation.NavigationView; @@ -30,15 +31,15 @@ import com.swifttech.remit.android.R; import com.swifttech.remit.android.base.BaseActivity; import com.swifttech.remit.android.common.customwidgets.CustomAlertDialog; import com.swifttech.remit.android.features.aboutscreen.view.AboutFastRemit; - import com.swifttech.remit.android.features.agentslisting.view.AgentListV2Activity; import com.swifttech.remit.android.features.appupdate.AppUpdateActivity; import com.swifttech.remit.android.features.cashpickuptowallet.view.CashPickupToWalletActivity; import com.swifttech.remit.android.features.customersupport.view.CustomerSupportFragment; import com.swifttech.remit.android.features.exrate.view.ExchangeRateActivity; import com.swifttech.remit.android.features.home.HomeParentViewContractV2; +import com.swifttech.remit.android.features.home.HomeViewModel; +import com.swifttech.remit.android.features.home.HomeViewModelFactory; import com.swifttech.remit.android.features.home.gateway.HomeV2Gateway; -import com.swifttech.remit.android.features.home.presenter.HomeV2Presenter; import com.swifttech.remit.android.features.home.presenter.HomeV2PresenterInterface; import com.swifttech.remit.android.features.home.view.notifications.DimBackgroundView; import com.swifttech.remit.android.features.recipientmanagement.view.recipientlistingV3.RecipientListingV3Activity; @@ -89,7 +90,8 @@ public class HomeActivityV2 extends BaseActivity implements HomeParentViewContra private Fragment currentFragment; private FragmentManager manager; - private HomeV2PresenterInterface presenter; +// private HomeV2PresenterInterface presenter; + private HomeViewModel viewModel; private static int WITHDRAW_AMOUNT_REQUEST_CODE = 24943; private static int SEND_MONEY_REQUEST_CODE = 24944; public static final String PROMPT_FINGERPRINT_BUNDLE_FLAG = "bundleKeyPromptFlag"; @@ -108,14 +110,18 @@ public class HomeActivityV2 extends BaseActivity implements HomeParentViewContra private void initialize() { manager = getSupportFragmentManager(); - presenter = new HomeV2Presenter(this,new HomeV2Gateway(), getIntent().getBooleanExtra(PROMPT_FINGERPRINT_BUNDLE_FLAG, false)); + HomeViewModelFactory homeViewModelFactory = new HomeViewModelFactory(this, new HomeV2Gateway(), getIntent().getBooleanExtra(PROMPT_FINGERPRINT_BUNDLE_FLAG, false)); + viewModel = new ViewModelProvider(this, homeViewModelFactory).get(HomeViewModel.class); + /* presenter = new HomeV2Presenter(this, + new HomeV2Gateway(), + getIntent().getBooleanExtra(PROMPT_FINGERPRINT_BUNDLE_FLAG, false));*/ } private void performDefaultAction(Bundle savedInstanceState) { if (savedInstanceState == null) { loadHomeAsCurrentView(); - presenter.checkIfFingerprintPromptShouldBeShown(); + viewModel.checkIfFingerprintPromptShouldBeShown(); } } @@ -188,7 +194,7 @@ public class HomeActivityV2 extends BaseActivity implements HomeParentViewContra @Override protected void onResume() { super.onResume(); - presenter.getRequiredData(); + viewModel.getRequiredData(); } @OnClick({R.id.iv_help, R.id.iv_nav, R.id.btn_withdraw, R.id.view_about_gme, R.id.view_setting, R.id.view_logout, R.id.iv_close, R.id.iv_notification}) @@ -218,10 +224,6 @@ public class HomeActivityV2 extends BaseActivity implements HomeParentViewContra showDrawer(false); break; - - - - } } @@ -286,7 +288,7 @@ public class HomeActivityV2 extends BaseActivity implements HomeParentViewContra public void showSendMoneyView() { if (isNotificaitonViewActive()) return; - String unverifiedMessage = presenter.checkIfUserVerified(); + String unverifiedMessage = viewModel.checkIfUserVerified(); if (unverifiedMessage == null) startActivity(new Intent(getApplicationContext(), RecipientListingV3Activity.class)); else @@ -307,7 +309,7 @@ public class HomeActivityV2 extends BaseActivity implements HomeParentViewContra public void showWalletStatment() { if (isNotificaitonViewActive()) return; - String unverifiedMessage = presenter.checkIfUserVerified(); + String unverifiedMessage = viewModel.checkIfUserVerified(); if (unverifiedMessage == null) startActivity(new Intent(getApplicationContext(), WalletStatementV2Activity.class)); else @@ -319,7 +321,7 @@ public class HomeActivityV2 extends BaseActivity implements HomeParentViewContra public void showTransactionHistoryView() { if (isNotificaitonViewActive()) return; - String unverifiedMessage = presenter.checkIfUserVerified(); + String unverifiedMessage = viewModel.checkIfUserVerified(); if (unverifiedMessage == null) startActivity(new Intent(getApplicationContext(), RemitTransactionHistoryActivity.class)); else @@ -335,7 +337,7 @@ public class HomeActivityV2 extends BaseActivity implements HomeParentViewContra @Override public HomeV2PresenterInterface getPresenter() { - return presenter; + return viewModel; } @@ -372,7 +374,7 @@ public class HomeActivityV2 extends BaseActivity implements HomeParentViewContra public void showBankDeposit() { if (isNotificaitonViewActive()) return; - String unverifiedMessage = presenter.checkIfUserVerified(); + String unverifiedMessage = viewModel.checkIfUserVerified(); if (unverifiedMessage == null) startActivity(new Intent(getApplicationContext(), WithdrawActivity.class)); else @@ -383,7 +385,7 @@ public class HomeActivityV2 extends BaseActivity implements HomeParentViewContra public void showCashPickupRedeem() { if (isNotificaitonViewActive()) return; - String unverifiedMessage = presenter.checkIfUserVerified(); + String unverifiedMessage = viewModel.checkIfUserVerified(); if (unverifiedMessage == null) startActivity(new Intent(getApplicationContext(), CashPickupToWalletActivity.class)); else @@ -429,14 +431,14 @@ public class HomeActivityV2 extends BaseActivity implements HomeParentViewContra @Override public void showKYCVerifiedIfRequired(boolean shouldShowView, String message, String title, boolean disableKYCViewClick) { if (currentFragment instanceof HomeFragmentV2) - ((HomeFragmentV2) currentFragment).showNotificationView(presenter.constructKYCVerificationRequiredViewNotification()); + ((HomeFragmentV2) currentFragment).showNotificationView(viewModel.constructKYCVerificationRequiredViewNotification()); } @Override public void showUpdateScreen(String build, String info, boolean isForceUpdate) { - if (!this.presenter.shouldNotPromptAppUpdate()) { + if (!this.viewModel.shouldNotPromptAppUpdate()) { new Handler().postDelayed(() -> { Intent intent = new Intent(HomeActivityV2.this, AppUpdateActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); @@ -465,7 +467,7 @@ public class HomeActivityV2 extends BaseActivity implements HomeParentViewContra @Override public void performLogout() { - presenter.clearAllData(); + viewModel.clearAllData(); logout(); } @@ -491,7 +493,7 @@ public class HomeActivityV2 extends BaseActivity implements HomeParentViewContra protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == APP_UPDATE_REQUEST && resultCode == RESULT_OK) { - this.presenter.storeAppUpdateDecision(data.getBooleanExtra(AppUpdateActivity.APP_UPDATE_NOT_NOW_TEMPORARY, false)); + this.viewModel.storeAppUpdateDecision(data.getBooleanExtra(AppUpdateActivity.APP_UPDATE_NOT_NOW_TEMPORARY, false)); } @@ -500,7 +502,7 @@ public class HomeActivityV2 extends BaseActivity implements HomeParentViewContra @Override protected void onDestroy() { super.onDestroy(); - presenter.onViewDestroyed(); + viewModel.onViewDestroyed(); } diff --git a/app/src/main/java/com/swifttech/remit/android/features/home/view/HomeFragmentV2.java b/app/src/main/java/com/swifttech/remit/android/features/home/view/HomeFragmentV2.java index 98bc8b3a..461fc983 100644 --- a/app/src/main/java/com/swifttech/remit/android/features/home/view/HomeFragmentV2.java +++ b/app/src/main/java/com/swifttech/remit/android/features/home/view/HomeFragmentV2.java @@ -13,6 +13,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.cardview.widget.CardView; import androidx.constraintlayout.widget.ConstraintLayout; +import androidx.lifecycle.ViewModelProvider; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; @@ -26,6 +27,7 @@ import com.swifttech.remit.android.base.BaseFragment; import com.swifttech.remit.android.common.customwidgets.LockableScrollView; import com.swifttech.remit.android.common.customwidgets.WaveProgressBarView; import com.swifttech.remit.android.features.home.HomeParentViewContractV2; +import com.swifttech.remit.android.features.home.HomeViewModel; import com.swifttech.remit.android.features.home.adapters.HomeMenuRvAdapterV2; import com.swifttech.remit.android.features.home.model.HomeNotificationViewDTO; import com.swifttech.remit.android.features.home.model.MenuItem; @@ -34,6 +36,7 @@ import com.swifttech.remit.android.features.home.view.notifications.KYCNotSubmit import com.swifttech.remit.android.features.home.view.notifications.KYCNotVerifiedNotificationView; import com.swifttech.remit.android.features.home.view.notifications.NotificaitonBaseView; import com.swifttech.remit.android.features.kyc.existingCustomer.view.ExistingKYCV3Activity; +import com.swifttech.remit.android.features.kyc.newCustomer.presenter.KYCV3ViewModel; import com.swifttech.remit.android.features.kyc.newCustomer.view.KYCV3Activity; import java.util.ArrayList; @@ -94,6 +97,7 @@ public class HomeFragmentV2 extends BaseFragment implements HomeMenuRvAdapterV2 homeMenuRvAdapterV2; private CompositeDisposable compositeDisposable; + private HomeViewModel homeViewModel; @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { @@ -111,6 +115,7 @@ public class HomeFragmentV2 extends BaseFragment implements private void init() { setupMenuRecyclerView(); + homeViewModel = new ViewModelProvider(requireActivity()).get(HomeViewModel.class); compositeDisposable = new CompositeDisposable(); @@ -136,9 +141,12 @@ public class HomeFragmentV2 extends BaseFragment implements swiperefresh.setOnRefreshListener(() -> { waveProgressBarView.startAnimatingPath(); //TODO change to view model - HomeParentViewContractV2 parentView = ((HomeParentViewContractV2) getActivity()); + /* HomeParentViewContractV2 parentView = ((HomeParentViewContractV2) getActivity()); if (parentView != null) - parentView.getPresenter().getRequiredData(); + parentView.getPresenter().getRequiredData();*/ + if(homeViewModel!=null){ + homeViewModel.getRequiredData(); + } }); lb_rewardpoint.setOnClickListener(this); tv_rewardpoint.setOnClickListener(this); diff --git a/app/src/main/java/com/swifttech/remit/android/features/kyc/newCustomer/KYCV3ViewModelFactory.java b/app/src/main/java/com/swifttech/remit/android/features/kyc/newCustomer/KYCV3ViewModelFactory.java index 83d7181f..5cac719f 100644 --- a/app/src/main/java/com/swifttech/remit/android/features/kyc/newCustomer/KYCV3ViewModelFactory.java +++ b/app/src/main/java/com/swifttech/remit/android/features/kyc/newCustomer/KYCV3ViewModelFactory.java @@ -15,7 +15,10 @@ public class KYCV3ViewModelFactory implements ViewModelProvider.Factory { private final String userId; private final String userPwd; - public KYCV3ViewModelFactory(KYCV3PresenterInterface.KYCV3ViewContractInterface view,String userId,String userPwd) { + public KYCV3ViewModelFactory( + KYCV3PresenterInterface.KYCV3ViewContractInterface view, + String userId, + String userPwd) { this.view = view; this.userId=userId; this.userPwd=userPwd; diff --git a/app/src/main/res/layout/activity_splash_screen_key_0.xml b/app/src/main/res/layout/activity_splash_screen_key_0.xml index bd8725b9..34e454da 100644 --- a/app/src/main/res/layout/activity_splash_screen_key_0.xml +++ b/app/src/main/res/layout/activity_splash_screen_key_0.xml @@ -385,7 +385,6 @@ - diff --git a/app/src/main/res/layout/activity_splash_screen_key_1.xml b/app/src/main/res/layout/activity_splash_screen_key_1.xml index d94dc109..d3b61b20 100644 --- a/app/src/main/res/layout/activity_splash_screen_key_1.xml +++ b/app/src/main/res/layout/activity_splash_screen_key_1.xml @@ -35,7 +35,6 @@ - + - - + - - - - + @@ -70,7 +66,7 @@ - @@ -158,13 +154,15 @@ @@ -182,8 +180,10 @@ @@ -210,7 +210,7 @@ @dimen/window_round_corner_radius - + + - - -