From 066f32de779311fae211522d5374a1a9d5d6eb5a Mon Sep 17 00:00:00 2001 From: preyearegmi Date: Mon, 1 Oct 2018 20:22:54 +0900 Subject: [PATCH] HOome V2 commence --- app/src/main/AndroidManifest.xml | 48 ++++++------ .../home/view/HomeActivity.java | 4 + .../home/view/HomeFragment.java | 5 +- .../homeV2/HomeParentViewContractV2.java | 1 - .../homeV2/gateway/HomeV2Gateway.java | 73 +++++++++++++++++++ .../homeV2/model/UserInfoModelV2.java | 9 +++ .../model/UserInfoV2DataApiResponse.java | 53 ++++++++++++++ .../presenter/HomeV2InteractorInterface.java | 8 ++ .../homeV2/presenter/HomeV2Presenter.java | 67 ++++++++++++++++- .../presenter/HomeV2PresenterInterface.java | 2 + .../loginV2/model/LoginModelV2.java | 71 ++++++++++-------- .../utils/https/API_URL.java | 1 + .../utils/https/ApiEndpoints.java | 3 + 13 files changed, 286 insertions(+), 59 deletions(-) create mode 100644 app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/model/UserInfoModelV2.java create mode 100644 app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/model/UserInfoV2DataApiResponse.java diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3382bd08..9fe11d3b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -59,18 +59,18 @@ android:theme="@style/AppTheme.NoActionBar" android:windowSoftInputMode="stateAlwaysHidden"> - - + + - - - - + + + + - - + + - - + + - - - - + + + + - - + + - - + + - - - - + + + + - - + + getUserRelatedData(String auth) { + return null; + } + + @Override + public Observable saveUserInfo(UserInfoModelV2 loginApiResponseModelV2) { + return Observable.create(observable->{ + + try { + SharedPreferences.Editor sharedPreferenceEditor = GmeApplication.getStorage().edit(); +// +// sharedPreferenceEditor.putString(PrefKeys.USER_ACCESS_CODE, loginApiResponseModelV2.getAccessCode()); +// sharedPreferenceEditor.putBoolean(PrefKeys.USER_ACTIVE, loginApiResponseModelV2.getActive()); +// sharedPreferenceEditor.putString(PrefKeys.USER_AVAILABLE_BALANCE, loginApiResponseModelV2.getAvailableBalance()); +// sharedPreferenceEditor.putString(PrefKeys.USER_CM_REGISTRATION_ID, loginApiResponseModelV2.getCmRegistrationId()); +// sharedPreferenceEditor.putString(PrefKeys.USER_COOUNTRY_CODE, loginApiResponseModelV2.getCountryCode()); +// sharedPreferenceEditor.putString(PrefKeys.USER_COUNTRY, loginApiResponseModelV2.getCountry()); +// sharedPreferenceEditor.putString(PrefKeys.USER_DP_URL, loginApiResponseModelV2.getDpUrl()); +// sharedPreferenceEditor.putString(PrefKeys.USER_DOCUMENT_ID_NUMBER, loginApiResponseModelV2.getIdNumber()); +// sharedPreferenceEditor.putString(PrefKeys.USER_EMAIL, loginApiResponseModelV2.getEmail()); +// sharedPreferenceEditor.putString(PrefKeys.USER_FIRST_NAME, loginApiResponseModelV2.getFirstName()); +// sharedPreferenceEditor.putString(PrefKeys.USER_ID, loginApiResponseModelV2.getUserId()); +// sharedPreferenceEditor.putString(PrefKeys.USER_ID_NUMBER, loginApiResponseModelV2.getSenderId()); +// sharedPreferenceEditor.putString(PrefKeys.USER_ID_TYPE, loginApiResponseModelV2.getIdType()); +// sharedPreferenceEditor.putBoolean(PrefKeys.USER_IS_REFERRED, loginApiResponseModelV2.getReferred()); +// sharedPreferenceEditor.putBoolean(PrefKeys.USER_KYC_VERIFIED, loginApiResponseModelV2.getKyc()); +// sharedPreferenceEditor.putString(PrefKeys.USER_LAST_NAME, loginApiResponseModelV2.getLastName()); +// sharedPreferenceEditor.putString(PrefKeys.USER_MIDDLE_NAME, loginApiResponseModelV2.getMiddleName()); +// sharedPreferenceEditor.putString(PrefKeys.USER_MSISDN, loginApiResponseModelV2.getMobileNumber()); +// sharedPreferenceEditor.putString(PrefKeys.USER_NICK_NAME, loginApiResponseModelV2.getNickName()); +// sharedPreferenceEditor.putString(PrefKeys.USER_PRIMARY_BANK_NAME, loginApiResponseModelV2.getPrimaryBankName()); +// sharedPreferenceEditor.putString(PrefKeys.USER_PROVINCE, loginApiResponseModelV2.getProvince()); +// sharedPreferenceEditor.putString(PrefKeys.USER_PROVINCE_ID, loginApiResponseModelV2.getProvinceId()); +// sharedPreferenceEditor.putString(PrefKeys.USER_REWAD_POINT, loginApiResponseModelV2.getRewardPoint()); +// sharedPreferenceEditor.putString(PrefKeys.USER_SOURCE_ID, loginApiResponseModelV2.getSourceId()); +// sharedPreferenceEditor.putBoolean(PrefKeys.USER_VERIFIED, loginApiResponseModelV2.getVerified()); +// sharedPreferenceEditor.putString(PrefKeys.USER_WALLET_NUMBER, loginApiResponseModelV2.getWalletNumber()); + sharedPreferenceEditor.commit(); + } + catch (Exception e ) + { + if(!observable.isDisposed()) + observable.onError(new Throwable("Failed to write to disk")); + + } + + if(!observable.isDisposed()) { + observable.onNext(loginApiResponseModelV2); + observable.onComplete(); + } + }); + } + + @Override + public Observable getCachedUserInfo() { + return null; + } } diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/model/UserInfoModelV2.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/model/UserInfoModelV2.java new file mode 100644 index 00000000..15d58ca6 --- /dev/null +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/model/UserInfoModelV2.java @@ -0,0 +1,9 @@ +package com.gmeremit.online.gmeremittance_native.homeV2.model; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; + +public class UserInfoModelV2 { + + +} diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/model/UserInfoV2DataApiResponse.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/model/UserInfoV2DataApiResponse.java new file mode 100644 index 00000000..d495472e --- /dev/null +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/model/UserInfoV2DataApiResponse.java @@ -0,0 +1,53 @@ +package com.gmeremit.online.gmeremittance_native.homeV2.model; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; + +public class UserInfoV2DataApiResponse { + + @SerializedName("ErrorCode") + @Expose + private String errorCode; + @SerializedName("Msg") + @Expose + private String msg; + @SerializedName("Id") + @Expose + private String id; + @SerializedName("Data") + @Expose + + private UserInfoModelV2 data; + + public String getErrorCode() { + return errorCode; + } + + public void setErrorCode(String errorCode) { + this.errorCode = errorCode; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public UserInfoModelV2 getData() { + return data; + } + + public void setData(UserInfoModelV2 data) { + this.data = data; + } +} diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/presenter/HomeV2InteractorInterface.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/presenter/HomeV2InteractorInterface.java index a5752e8b..42a3f2f1 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/presenter/HomeV2InteractorInterface.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/presenter/HomeV2InteractorInterface.java @@ -2,8 +2,11 @@ package com.gmeremit.online.gmeremittance_native.homeV2.presenter; import com.gmeremit.online.gmeremittance_native.base.BaseInteractorInterface; import com.gmeremit.online.gmeremittance_native.base.PrivilegedGatewayInterface; +import com.gmeremit.online.gmeremittance_native.homeV2.model.UserInfoModelV2; +import com.gmeremit.online.gmeremittance_native.homeV2.model.UserInfoV2DataApiResponse; import com.gmeremit.online.gmeremittance_native.kycV2.model.KYCRegistrationDataResponse; import com.gmeremit.online.gmeremittance_native.kycV2.model.KYCRelatedDataResponse; +import com.gmeremit.online.gmeremittance_native.loginV2.model.LoginModelV2; import java.io.File; @@ -15,5 +18,10 @@ public interface HomeV2InteractorInterface extends BaseInteractorInterface { interface HomeV2GatewayInterface extends PrivilegedGatewayInterface { + Observable getUserRelatedData(String auth); + + Observable saveUserInfo(UserInfoModelV2 userRelatedData); + + Observable getCachedUserInfo(); } } 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 22eb67f2..2a68838c 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 @@ -2,20 +2,81 @@ package com.gmeremit.online.gmeremittance_native.homeV2.presenter; import com.gmeremit.online.gmeremittance_native.base.BasePresenter; 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; -public class HomeV2Presenter extends BasePresenter implements HomeV2PresenterInterface,HomeV2InteractorInterface { +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; + +public class HomeV2Presenter extends BasePresenter implements HomeV2PresenterInterface, HomeV2InteractorInterface { private final HomeV2ContractInterface view; private final HomeV2GatewayInterface gateway; + private final CompositeDisposable compositeDisposable; public HomeV2Presenter(HomeV2PresenterInterface.HomeV2ContractInterface view) { - this.view=view; - this.gateway= new HomeV2Gateway(); + this.view = view; + this.gateway = new HomeV2Gateway(this); + this.compositeDisposable = new CompositeDisposable(); } + /** + * Try to fetch real data, otherwise show stale data to user if cannot be fetched. + */ @Override public void getRequiredData() { + compositeDisposable.add( + Observable.concat(getDataFromServerAndCacheIt().timeout(5, TimeUnit.SECONDS).onErrorResumeNext((Function>) Observable::error).subscribeOn(Schedulers.io()), + this.gateway.getCachedUserInfo().subscribeOn(Schedulers.io())) + .observeOn(AndroidSchedulers.mainThread()) + .take(1) + .subscribeWith(new UserInfoObserver())); + + + } + + + private Observable getDataFromServerAndCacheIt() { + return this.gateway.getUserRelatedData(this.gateway.getAuth()).flatMap(userInfoV2DataApiResponse -> { + if (userInfoV2DataApiResponse.getErrorCode().equalsIgnoreCase(Constants.SUCCESS_CODE_V2)) + return Observable.just(userInfoV2DataApiResponse.getData()); + else + return Observable.error(new Throwable(userInfoV2DataApiResponse.getMsg())); + }); + } + + public class UserInfoObserver extends GenericApiObserverResponse { + + @Override + protected void onSuccess(UserInfoModelV2 userInfoModelV2) { +// String fullName = ""; +// 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()); +// } + } + + @Override + public void onFailed(String message) { + + } + + @Override + protected void onConnectionNotEstablished(String message) { + + } } + + } 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 f40d6452..2b8e7bbd 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 @@ -12,5 +12,7 @@ public interface HomeV2PresenterInterface extends BasePresenterInterface { interface HomeV2ContractInterface extends BaseContractInterface { + void showInfoInDrawer(String fullname, String email, String balance, String walletNumber, String bankName, String contact); + } } diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/loginV2/model/LoginModelV2.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/loginV2/model/LoginModelV2.java index 930791f1..82f13896 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/loginV2/model/LoginModelV2.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/loginV2/model/LoginModelV2.java @@ -7,94 +7,97 @@ public class LoginModelV2 { @SerializedName("userId") @Expose - private String userId; + protected String userId; @SerializedName("firstName") @Expose - private String firstName; + protected String firstName; @SerializedName("middleName") @Expose - private String middleName; + protected String middleName; @SerializedName("lastName") @Expose - private String lastName; + protected String lastName; @SerializedName("nickName") @Expose - private String nickName; + protected String nickName; @SerializedName("email") @Expose - private String email; + protected String email; @SerializedName("mobileNumber") @Expose - private String mobileNumber; + protected String mobileNumber; @SerializedName("rewardPoint") @Expose - private String rewardPoint; + protected String rewardPoint; @SerializedName("walletNumber") @Expose - private String walletNumber; + protected String walletNumber; @SerializedName("availableBalance") @Expose - private String availableBalance; + protected String availableBalance; @SerializedName("primaryBankName") @Expose - private String primaryBankName; + protected String primaryBankName; @SerializedName("accessCode") @Expose - private String accessCode; + protected String accessCode; @SerializedName("dpUrl") @Expose - private String dpUrl; + protected String dpUrl; @SerializedName("kyc") @Expose - private Boolean kyc; + protected Boolean kyc; @SerializedName("verified") @Expose - private Boolean verified; + protected Boolean verified; @SerializedName("active") @Expose - private Boolean active; + protected Boolean active; @SerializedName("cmRegistrationId") @Expose - private String cmRegistrationId; + protected String cmRegistrationId; @SerializedName("isReferred") @Expose - private Boolean isReferred; + protected Boolean isReferred; @SerializedName("country") @Expose - private String country; + protected String country; @SerializedName("province") @Expose - private String province; + protected String province; @SerializedName("provinceId") @Expose - private String provinceId; + protected String provinceId; @SerializedName("sourceId") @Expose - private String sourceId; + protected String sourceId; @SerializedName("idType") @Expose - private String idType; + protected String idType; @SerializedName("idNumber") @Expose - private String idNumber; + protected String idNumber; @SerializedName("countryCode") @Expose - private String countryCode; + protected String countryCode; @SerializedName("ErrorCode") @Expose - private String errorCode; + protected String errorCode; @SerializedName("Msg") @Expose - private String msg; + protected String msg; @SerializedName("Id") @Expose - private String id; + protected String id; @SerializedName("senderId") @Expose - private String senderId; + protected String senderId; + @SerializedName("yearlyLimit") + @Expose + protected String yearlyLimit; @SerializedName("Data") @Expose - private Object data; + protected Object data; public String getUserId() { return userId; @@ -335,4 +338,12 @@ public class LoginModelV2 { public void setData(Object data) { this.data = data; } + + public String getYearlyLimit() { + return yearlyLimit; + } + + public void setYearlyLimit(String yearlyLimit) { + this.yearlyLimit = yearlyLimit; + } } diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/https/API_URL.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/https/API_URL.java index 7da8b9d2..ee214637 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/https/API_URL.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/https/API_URL.java @@ -139,5 +139,6 @@ public class API_URL { public static final String KYC_RELATED_DATA_V2 = "mobile/loadform/kyc"; public static final String UPLOAD_KYC_V2 = "mobile/RegisterKyc"; public static final String GET_TRANSACTION_HISTORY_V2 = "mobile/tranhistory/{userId}"; + public static final String GET_USER_INFO_V2 = "/users/{userId}"; } diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/https/ApiEndpoints.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/https/ApiEndpoints.java index 482ca274..8f6d2510 100644 --- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/https/ApiEndpoints.java +++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/https/ApiEndpoints.java @@ -621,4 +621,7 @@ public interface ApiEndpoints { Observable getTransactionHistoryV2(@Header("Authorization") String token, @Path("userId") String userId, @Body() JsonObject jsonObject); + @GET(API_URL.USER_PROFILE + "/{userId}") + @Headers("Content-Type: application/json") + Call getUserRelatedInfo(@Path("userId") String userId); }