diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser index 2da30960..c9e618cf 100644 Binary files a/.idea/caches/build_file_checksums.ser and b/.idea/caches/build_file_checksums.ser differ diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/gateway/HomeV2Gateway.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/gateway/HomeV2Gateway.java index fda8595c..37e2e4df 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/gateway/HomeV2Gateway.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/gateway/HomeV2Gateway.java @@ -34,10 +34,10 @@ public class HomeV2Gateway extends PrivilegedGateway implements HomeV2Interactor jsonObject.addProperty("phoneOS",phoneOs); jsonObject.addProperty("fcmId",fcmId); jsonObject.addProperty("osVersion",osVersion); - return HttpClientV2.getInstance().getUserRelatedInfoV2(auth,jsonObject); +// return HttpClientV2.getInstance().getUserRelatedInfoV2(auth,jsonObject); // Mock slow server response -// return Observable.timer(10, TimeUnit.SECONDS).flatMap(tick->HttpClientV2.getInstance().getUserRelatedInfoV2(auth,jsonObject)); + return Observable.timer(3, TimeUnit.SECONDS).flatMap(tick->HttpClientV2.getInstance().getUserRelatedInfoV2(auth,jsonObject)); } @Override diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/presenter/HomeV2Presenter.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/presenter/HomeV2Presenter.java index f49464c5..e9136546 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/presenter/HomeV2Presenter.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/presenter/HomeV2Presenter.java @@ -8,7 +8,6 @@ import com.gmeremit.online.gmeremittance_native.customwidgets.CustomAlertDialog; import com.gmeremit.online.gmeremittance_native.homeV2.gateway.HomeV2Gateway; import com.gmeremit.online.gmeremittance_native.homeV2.model.UserInfoModelV2; import com.gmeremit.online.gmeremittance_native.utils.Constants; -import com.gmeremit.online.gmeremittance_native.utils.https.GenericApiObserverResponse; import com.gmeremit.online.gmeremittance_native.utils.https.SessionExpiredException; import com.gmeremit.online.gmeremittance_native.utils.https.UserSessionObserverResponse; import com.google.firebase.iid.FirebaseInstanceId; @@ -21,6 +20,7 @@ import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.CompositeDisposable; import io.reactivex.functions.Function; import io.reactivex.schedulers.Schedulers; +import io.reactivex.subjects.BehaviorSubject; import retrofit2.HttpException; public class HomeV2Presenter extends BasePresenter implements HomeV2PresenterInterface, HomeV2InteractorInterface { @@ -28,12 +28,15 @@ public class HomeV2Presenter extends BasePresenter implements HomeV2PresenterInt private final HomeV2ContractInterface view; private final HomeV2GatewayInterface gateway; private final CompositeDisposable compositeDisposable; + private final BehaviorSubject homeFragmentRelatedSubject; private UserState userState = null; public HomeV2Presenter(HomeV2PresenterInterface.HomeV2ContractInterface view) { this.view = view; this.gateway = new HomeV2Gateway(this); this.compositeDisposable = new CompositeDisposable(); + this.homeFragmentRelatedSubject = BehaviorSubject.create(); + } @@ -114,6 +117,11 @@ public class HomeV2Presenter extends BasePresenter implements HomeV2PresenterInt return userState.getDob(); } + @Override + public Observable subscribeToHomeFragmentDataFetchEvent() { + return homeFragmentRelatedSubject; + } + private Observable getDataFromServerAndCacheIt() { String fcmID = FirebaseInstanceId.getInstance().getToken(); if (fcmID == null || fcmID.length() < 1) @@ -150,14 +158,8 @@ public class HomeV2Presenter extends BasePresenter implements HomeV2PresenterInt @Override protected void onSuccess(UserInfoModelV2 userInfoModelV2) { String fullName = userInfoModelV2.getFirstName(); -// if ((userInfoModelV2.getMiddleName() != null && userInfoModelV2.getMiddleName().length() > 0)) -// fullName = userInfoModelV2.getFirstName() + " " + userInfoModelV2.getMiddleName() + " " + userInfoModelV2.getLastName(); -// else -// fullName = userInfoModelV2.getFirstName() + " " + userInfoModelV2.getLastName(); - view.showInfoInDrawer(fullName, userInfoModelV2.getEmail(), userInfoModelV2.getAvailableBalance(), userInfoModelV2.getWalletNumber(), userInfoModelV2.getPrimaryBankName(), userInfoModelV2.getMobileNumber()); - view.updateUserInfoInChildView(fullName, userInfoModelV2.getYearlyLimit(), userInfoModelV2.getRewardPoint()); String message = ""; String title = ""; @@ -167,7 +169,6 @@ public class HomeV2Presenter extends BasePresenter implements HomeV2PresenterInt boolean disableKYCViewClick = userInfoModelV2.getKyc() && !userInfoModelV2.getVerified(); boolean shouldShowKYCView = false; -// title = "Thank you for registering with us!"; if (!userInfoModelV2.getKyc()) { shouldShowKYCView = true; title = "Verify your Account"; @@ -178,14 +179,15 @@ public class HomeV2Presenter extends BasePresenter implements HomeV2PresenterInt title = "Verification in Process"; message = "Your registration request is in approval process. You will soon be able to use GME services."; } - view.showKYCVerifiedIfRequired(shouldShowKYCView, message, title, disableKYCViewClick); + + if(homeFragmentRelatedSubject !=null) + homeFragmentRelatedSubject.onNext(new HomeFragmentRelatedData(shouldShowKYCView,message,title,disableKYCViewClick,fullName, userInfoModelV2.getYearlyLimit(), userInfoModelV2.getRewardPoint())); } @Override public void onFailed(String message) { Log.d("DashBoardError", "Recieved Error : " + message); - } @Override @@ -201,6 +203,9 @@ public class HomeV2Presenter extends BasePresenter implements HomeV2PresenterInt } } + /** + * In Memory Cache, the cache is always updated for meta information of user + */ private class UserState { private boolean hasSubmittedKyc; @@ -233,4 +238,55 @@ public class HomeV2Presenter extends BasePresenter implements HomeV2PresenterInt } + public class HomeFragmentRelatedData + { + private boolean shouldShowKycView; + private String message; + private String title; + private boolean disableKYCViewClick; + + private String userName; + private String yearlyLimit; + private String rewardPoint; + + public HomeFragmentRelatedData(boolean shouldShowKycView, String message, String title, boolean disableKYCViewClick, String userName,String yearlyLimit, String rewardPoint) { + this.shouldShowKycView = shouldShowKycView; + this.message = message; + this.title = title; + this.disableKYCViewClick = disableKYCViewClick; + this.userName=userName; + this.yearlyLimit=yearlyLimit; + this.rewardPoint=rewardPoint; + } + + public boolean isShouldShowKycView() { + return shouldShowKycView; + } + + public String getMessage() { + return message; + } + + public String getTitle() { + return title; + } + + public boolean isDisableKYCViewClick() { + return disableKYCViewClick; + } + + public String getUserName() { + return userName; + } + + public String getYearlyLimit() { + return yearlyLimit; + } + + public String getRewardPoint() { + return rewardPoint; + } + } + + } diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/presenter/HomeV2PresenterInterface.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/presenter/HomeV2PresenterInterface.java index 02b38708..ce776266 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/presenter/HomeV2PresenterInterface.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/presenter/HomeV2PresenterInterface.java @@ -1,10 +1,9 @@ package com.gmeremit.online.gmeremittance_native.homeV2.presenter; -import com.gmeremit.online.gmeremittance_native.agentsV2.model.AgentInfoModel; import com.gmeremit.online.gmeremittance_native.base.BaseContractInterface; import com.gmeremit.online.gmeremittance_native.base.BasePresenterInterface; -import java.util.List; +import io.reactivex.Observable; public interface HomeV2PresenterInterface extends BasePresenterInterface { @@ -20,13 +19,15 @@ public interface HomeV2PresenterInterface extends BasePresenterInterface { String getUserDob(); + Observable subscribeToHomeFragmentDataFetchEvent(); + + + interface HomeV2ContractInterface extends BaseContractInterface { void showInfoInDrawer(String fullname, String email, String balance, String walletNumber, String bankName, String contact); - void updateUserInfoInChildView(String userName, String yearlyLimit, String rewardPoint); - void showKYCVerifiedIfRequired(boolean shouldShowView, String message, String title, boolean disableKYCViewClick); void performLogout(); diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/view/HomeActivityV2.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/view/HomeActivityV2.java index 0f672c57..ee86fb84 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/view/HomeActivityV2.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/view/HomeActivityV2.java @@ -332,11 +332,6 @@ public class HomeActivityV2 extends BaseActivity implements HomeParentViewContra } } - @Override - public void updateUserInfoInChildView(String userName, String yearlyLimit, String rewardPoint) { - if (currentFragment != null && currentFragment instanceof HomeFragmentV2) - ((HomeFragmentV2) currentFragment).updateInfo(userName, yearlyLimit, rewardPoint); - } @Override public void showKYCVerifiedIfRequired(boolean shouldShowView, String message, String title, boolean disableKYCViewClick) { diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/view/HomeFragmentV2.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/view/HomeFragmentV2.java index 37ad0500..8fea6358 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/view/HomeFragmentV2.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/view/HomeFragmentV2.java @@ -17,14 +17,17 @@ import com.gmeremit.online.gmeremittance_native.base.BaseFragment; import com.gmeremit.online.gmeremittance_native.homeV2.HomeParentViewContractV2; import com.gmeremit.online.gmeremittance_native.homeV2.adapters.HomeMenuRvAdapterV2; import com.gmeremit.online.gmeremittance_native.homeV2.model.MenuItem; +import com.gmeremit.online.gmeremittance_native.homeV2.presenter.HomeV2Presenter; import com.gmeremit.online.gmeremittance_native.kycV2.view.KYCFormV2Activity; import com.gmeremit.online.gmeremittance_native.utils.Utils; +import com.gmeremit.online.gmeremittance_native.utils.https.GenericApiObserverResponse; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; +import io.reactivex.disposables.CompositeDisposable; import static com.gmeremit.online.gmeremittance_native.kycV2.view.KYCFormV2Activity.KYC_RESULT_STATUS_BUNDLE_KEY; @@ -60,6 +63,8 @@ public class HomeFragmentV2 extends BaseFragment implements HomeMenuRvAdapterV2. HomeMenuRvAdapterV2 homeMenuRvAdapterV2; private boolean disableKYCViewClick; + private HomeFragmentDataObserver homeFragmentDataObserver; + private CompositeDisposable compositeDisposable; @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { @@ -77,6 +82,10 @@ public class HomeFragmentV2 extends BaseFragment implements HomeMenuRvAdapterV2. private void init() { setupMenuRecyclerView(); + homeFragmentDataObserver=new HomeFragmentDataObserver(); + compositeDisposable=new CompositeDisposable(); + + } private void setupMenuRecyclerView() { @@ -119,8 +128,12 @@ public class HomeFragmentV2 extends BaseFragment implements HomeMenuRvAdapterV2. return menuList; } - private void performDefaultAction(Bundle savedInstanceState) { - + private void performDefaultAction(Bundle savedInupdateInfostanceState) { + HomeParentViewContractV2 parentView= ((HomeParentViewContractV2)getActivity()); + if(parentView!=null) + { compositeDisposable.add( + parentView.getPresenter().subscribeToHomeFragmentDataFetchEvent().subscribeWith(homeFragmentDataObserver)); + } } @Override @@ -210,6 +223,14 @@ public class HomeFragmentV2 extends BaseFragment implements HomeMenuRvAdapterV2. } } + @Override + public void onDestroy() { + super.onDestroy(); + if (compositeDisposable != null && !compositeDisposable.isDisposed()) { + compositeDisposable.dispose(); + } + } + public void showKYCVerifiedIfRequired(boolean shouldShowView, String message, String title, boolean disableKYCViewClick) { if(isUIReady()) { @@ -256,4 +277,25 @@ public class HomeFragmentV2 extends BaseFragment implements HomeMenuRvAdapterV2. }); } } + + + class HomeFragmentDataObserver extends GenericApiObserverResponse + { + + @Override + protected void onSuccess(HomeV2Presenter.HomeFragmentRelatedData dashboardRelatedData) { + showKYCVerifiedIfRequired(dashboardRelatedData.isShouldShowKycView(),dashboardRelatedData.getMessage(),dashboardRelatedData.getTitle(),dashboardRelatedData.isDisableKYCViewClick()); + updateInfo(dashboardRelatedData.getUserName(),dashboardRelatedData.getYearlyLimit(),dashboardRelatedData.getRewardPoint()); + } + + @Override + public void onFailed(String message) { + + } + + @Override + protected void onConnectionNotEstablished(String message) { + + } + } } diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/sendmoneyV2/presenter/SendMoneyV2Presenter.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/sendmoneyV2/presenter/SendMoneyV2Presenter.java index 2cad51f2..45b8a5f7 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/sendmoneyV2/presenter/SendMoneyV2Presenter.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/sendmoneyV2/presenter/SendMoneyV2Presenter.java @@ -250,9 +250,8 @@ public class SendMoneyV2Presenter extends BasePresenter implements SendMoneyV2Pr @Override public void onViewDestroyed() { super.onViewDestroyed(); - if (compositeObservable != null & !compositeObservable.isDisposed()) { + if (compositeObservable != null && !compositeObservable.isDisposed()) { compositeObservable.dispose(); - compositeObservable.clear(); } }