Browse Source

HomeFragment data fetching is changed from imperative to reactive

master
preyearegmi 6 years ago
parent
commit
fedb658007
  1. BIN
      .idea/caches/build_file_checksums.ser
  2. 4
      app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/gateway/HomeV2Gateway.java
  3. 76
      app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/presenter/HomeV2Presenter.java
  4. 9
      app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/presenter/HomeV2PresenterInterface.java
  5. 5
      app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/view/HomeActivityV2.java
  6. 46
      app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/view/HomeFragmentV2.java
  7. 3
      app/src/main/java/com/gmeremit/online/gmeremittance_native/sendmoneyV2/presenter/SendMoneyV2Presenter.java

BIN
.idea/caches/build_file_checksums.ser

4
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

76
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<HomeFragmentRelatedData> 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<HomeFragmentRelatedData> subscribeToHomeFragmentDataFetchEvent() {
return homeFragmentRelatedSubject;
}
private Observable<UserInfoModelV2> 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;
}
}
}

9
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<HomeV2Presenter.HomeFragmentRelatedData> 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();

5
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) {

46
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<HomeV2Presenter.HomeFragmentRelatedData>
{
@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) {
}
}
}

3
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();
}
}

Loading…
Cancel
Save