Browse Source

Fingerprint auth prompt added

master
Preyea Regmi 5 years ago
parent
commit
eb3ac614c2
  1. BIN
      .idea/caches/build_file_checksums.ser
  2. 2
      app/build.gradle
  3. 3
      app/proguard-rules.pro
  4. 1
      app/src/main/java/com/gmeremit/online/gmeremittance_native/base/PrefKeys.java
  5. 5
      app/src/main/java/com/gmeremit/online/gmeremittance_native/base/PrivilegedGateway.java
  6. 1
      app/src/main/java/com/gmeremit/online/gmeremittance_native/base/PrivilegedGatewayInterface.java
  7. 4
      app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/gateway/HomeV2Gateway.java
  8. 2
      app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/presenter/HomeV2InteractorInterface.java
  9. 28
      app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/presenter/HomeV2Presenter.java
  10. 8
      app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/presenter/HomeV2PresenterInterface.java
  11. 17
      app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/view/HomeActivityV2.java
  12. 1
      app/src/main/java/com/gmeremit/online/gmeremittance_native/loginV2/view/LoginV2Activity.java
  13. 11
      app/src/main/java/com/gmeremit/online/gmeremittance_native/rewardV2/adapter/rewardlisting/OrderListingRvAdapter.java
  14. 10
      app/src/main/java/com/gmeremit/online/gmeremittance_native/rewardV2/adapter/rewardlisting/RewardListingRvAdapter.java
  15. 4
      app/src/main/java/com/gmeremit/online/gmeremittance_native/rewardV2/gateway/rewardlisting/RewardListingV2Gateway.java
  16. 74
      app/src/main/java/com/gmeremit/online/gmeremittance_native/rewardV2/presenter/rewardlisting/RewardListingV2Presenter.java
  17. 9
      app/src/main/java/com/gmeremit/online/gmeremittance_native/rewardV2/presenter/rewardlisting/RewardListingV2PresenterInterface.java
  18. 133
      app/src/main/java/com/gmeremit/online/gmeremittance_native/rewardV2/view/rewardlisting/OrderHistoryFragment.java
  19. 17
      app/src/main/java/com/gmeremit/online/gmeremittance_native/rewardV2/view/rewardlisting/RewardListFragment.java
  20. 3
      app/src/main/java/com/gmeremit/online/gmeremittance_native/rewardV2/view/rewardlisting/RewardListingV2Activity.java
  21. 22
      app/src/main/java/com/gmeremit/online/gmeremittance_native/settings/view/FingerprintEnablePromptActivity.java
  22. 2
      app/src/main/res/layout/fragment_reward_list.xml
  23. 4
      app/src/stag/google-services.json

BIN
.idea/caches/build_file_checksums.ser

2
app/build.gradle

@ -76,7 +76,7 @@ android {
}
stag {
manifestPlaceholders.fileProvider = "com.gmeremit.online.gmeremittance_native.stag.fileprovider"
applicationIdSuffix ".stag"
// applicationIdSuffix ".stag"
signingConfig signingConfigs.debug
buildConfigField 'String', 'BASE_URL', '"http://gmeuat.gmeremit.com:5022/api/"'
buildConfigField 'String', 'API_VERSION', '"v1"'

3
app/proguard-rules.pro

@ -119,4 +119,5 @@
-dontwarn rx.**
-dontwarn retrofit.**
-keep class android.support.v7.widget.** { *; }
-keep class android.support.v7.widget.** { *; }

1
app/src/main/java/com/gmeremit/online/gmeremittance_native/base/PrefKeys.java

@ -43,6 +43,7 @@ public class PrefKeys {
public static final String USER_LOGGED_IN_STATUS = "LOGGED_IN_STATUS";
public static final String USER_DOB = "USER_DOB_V2";
public static final String HAS_PROMPTED_USER_FOR_FINGERPRINT_FIRST_TIME = "HAS_PROMPTED_USER_FOR_FINGERPRINT_FIRST_TIME";
public static String USER_LAST_INITIATED_PENNY_TEST_MESSAGE="USER_LAST_INITIATED_PENNY_TEST_MESSAGE";
public static String USER_PREFERRED_LOCALE ="USER_PREFERRED_LOCALE";
public static String USER_PREFERRED_LANGUAGE ="USER_PREFERRED_LANGUAGE";

5
app/src/main/java/com/gmeremit/online/gmeremittance_native/base/PrivilegedGateway.java

@ -225,5 +225,8 @@ public abstract class PrivilegedGateway implements PrivilegedGatewayInterface {
editor.apply();
}
@Override
public String getCustomerRewardPoint() {
return GmeApplication.getStorage().getString(PrefKeys.USER_REWAD_POINT,"");
}
}

1
app/src/main/java/com/gmeremit/online/gmeremittance_native/base/PrivilegedGatewayInterface.java

@ -79,4 +79,5 @@ public interface PrivilegedGatewayInterface extends BaseGatewayInterface {
void flushBiometricData();
String getCustomerRewardPoint();
}

4
app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/gateway/HomeV2Gateway.java

@ -114,6 +114,10 @@ public class HomeV2Gateway extends PrivilegedGateway implements HomeV2Interactor
GmeApplication.getStorage().edit().putBoolean(PrefKeys.USER_KYC_VERIFIED, action).apply();
}
@Override
public boolean hasPromptedUserForFingerprintFirstTime() {
return GmeApplication.getStorage().getBoolean(PrefKeys.HAS_PROMPTED_USER_FOR_FINGERPRINT_FIRST_TIME, false);
}
@Override

2
app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/presenter/HomeV2InteractorInterface.java

@ -24,5 +24,7 @@ public interface HomeV2InteractorInterface extends BaseInteractorInterface {
void updateVerifiedUserInCache(boolean action);
boolean hasPromptedUserForFingerprintFirstTime();
}
}

28
app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/presenter/HomeV2Presenter.java

@ -15,6 +15,7 @@ import com.gmeremit.online.gmeremittance_native.utils.Constants;
import com.gmeremit.online.gmeremittance_native.utils.https.HTTPConstants;
import com.gmeremit.online.gmeremittance_native.utils.https.SessionExpiredException;
import com.gmeremit.online.gmeremittance_native.utils.https.UserSessionObserverResponse;
import com.gmeremit.online.gmeremittance_native.utils.security.SecurityUtils;
import com.google.firebase.iid.FirebaseInstanceId;
import java.util.concurrent.TimeUnit;
@ -34,15 +35,17 @@ public class HomeV2Presenter extends BasePresenter implements HomeV2PresenterInt
private final HomeV2GatewayInterface gateway;
private final CompositeDisposable compositeDisposable;
private final BehaviorSubject<HomeFragmentRelatedData> homeFragmentRelatedSubject;
private final boolean shouldCheckFingerprintPrompt;
private boolean shouldNotPromptAppUpdate;
public HomeV2Presenter(HomeV2PresenterInterface.HomeV2ContractInterface view) {
public HomeV2Presenter(HomeV2ContractInterface view, boolean checkFingerprintPromptScreen) {
this.view = view;
this.gateway = new HomeV2Gateway(this);
this.compositeDisposable = new CompositeDisposable();
this.homeFragmentRelatedSubject = BehaviorSubject.create();
this.gateway.addPrivilegedGatewayDataObserver(this);
this.shouldNotPromptAppUpdate=false;
this.shouldCheckFingerprintPrompt=checkFingerprintPromptScreen;
}
@ -89,8 +92,7 @@ public class HomeV2Presenter extends BasePresenter implements HomeV2PresenterInt
@Override
public void manuallyUpdateKYCForStatusToSubmitted() {
// String kycMessage = "Your registration request is in approval process. You will soon be able to use GME services.";
// String kycTitle = "Verification in Process";
String kycMessage = getStringfromStringId(R.string.verification_in_aproval_process_text);
String kycTitle = getStringfromStringId(R.string.kyc_verify_pending_text);
view.showKYCVerifiedIfRequired(true, kycMessage, kycTitle, true, null);
@ -100,9 +102,6 @@ public class HomeV2Presenter extends BasePresenter implements HomeV2PresenterInt
public void manullyUpdateKYCToSubmittedAndShowPennyTest() {
gateway.updateSubmittedKycInCache(true);
gateway.updateVerifiedUserInCache(false);
// String pennyTestTitle = "Continue the registration process";
// String pennyTestMessage = "Please verify your primary bank account to complete the registration.";
String pennyTestTitle = getStringfromStringId(R.string.penny_test_pending_text);
String pennyTestMessage = getStringfromStringId(R.string.complete_penny_test);
view.showKYCVerifiedIfRequired(false, "", "", true, () -> view.showPennyTestViewIfRequired(true, pennyTestTitle, pennyTestMessage));
@ -112,13 +111,6 @@ public class HomeV2Presenter extends BasePresenter implements HomeV2PresenterInt
public String checkIfUserVerified() {
String resultMessage = null;
String pennyTestStatus = gateway.getPennyTestStatus();
// if (!gateway.hasUserSubmittedKYC())
// resultMessage = "Kindly complete your registration process with us to start using GME services";
// else if (pennyTestStatus != null && pennyTestStatus.length() > 0 && !pennyTestStatus.equalsIgnoreCase("2"))
// resultMessage = "Please verify your primary bank account to complete the registration";
// else if (!gateway.isUserKYCVerified())
// resultMessage = "Your registration request is in approval process. You will soon be able to use GME services";
if (!gateway.hasUserSubmittedKYC())
resultMessage = getStringfromStringId(R.string.complete_your_registration_text);
else if (pennyTestStatus != null && pennyTestStatus.length() > 0 && !pennyTestStatus.equalsIgnoreCase("2"))
@ -155,6 +147,16 @@ public class HomeV2Presenter extends BasePresenter implements HomeV2PresenterInt
return this.shouldNotPromptAppUpdate;
}
@Override
public void checkIfFingerprintPromptShouldBeShown() {
if(shouldCheckFingerprintPrompt)
{
if(!gateway.hasPromptedUserForFingerprintFirstTime()&&SecurityUtils.checkFingerPrintUsablity(view.getContext()) && !gateway.isFingerPrintAuthEnabled() && gateway.getPersistedUserId() != null && gateway.getPersistedUserPwd() != null)
view.showFingerprintAvailablityToUser();
}
}
private Observable<UserInfoModelV2> getDataFromServerAndSaveIt() {
String fcmID;
try {

8
app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/presenter/HomeV2PresenterInterface.java

@ -1,5 +1,7 @@
package com.gmeremit.online.gmeremittance_native.homeV2.presenter;
import android.content.Context;
import com.gmeremit.online.gmeremittance_native.base.BaseContractInterface;
import com.gmeremit.online.gmeremittance_native.base.BasePresenterInterface;
@ -29,6 +31,8 @@ public interface HomeV2PresenterInterface extends BasePresenterInterface {
boolean shouldNotPromptAppUpdate();
void checkIfFingerprintPromptShouldBeShown();
interface HomeV2ContractInterface extends BaseContractInterface
{
@ -43,5 +47,9 @@ public interface HomeV2PresenterInterface extends BasePresenterInterface {
void showPennyTestViewIfRequired(boolean showView, String pennyTestTitle, String pennyTestMessage);
void showUpdateScreen(String build, String info,boolean isForcedUpdate);
Context getContext();
void showFingerprintAvailablityToUser();
}
}

17
app/src/main/java/com/gmeremit/online/gmeremittance_native/homeV2/view/HomeActivityV2.java

@ -42,6 +42,7 @@ import com.gmeremit.online.gmeremittance_native.recipientV2.view.recipientlistin
import com.gmeremit.online.gmeremittance_native.resendV2.view.ReSendMoneyV2Activity;
import com.gmeremit.online.gmeremittance_native.resendV2.view.TransactionListingV2Activity;
import com.gmeremit.online.gmeremittance_native.resetpassV2.view.ResetPassV2Activity;
import com.gmeremit.online.gmeremittance_native.settings.view.FingerprintEnablePromptActivity;
import com.gmeremit.online.gmeremittance_native.settings.view.SettingsView;
import com.gmeremit.online.gmeremittance_native.static_pages.view.AboutGME;
import com.gmeremit.online.gmeremittance_native.static_pages.view.SupportActivity;
@ -89,6 +90,7 @@ public class HomeActivityV2 extends BaseActivity implements HomeParentViewContra
private HomeV2PresenterInterface presenter;
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";
@Override
protected void onCreate(Bundle savedInstanceState) {
@ -102,13 +104,14 @@ public class HomeActivityV2 extends BaseActivity implements HomeParentViewContra
private void initialize() {
manager = getSupportFragmentManager();
presenter = new HomeV2Presenter(this);
presenter = new HomeV2Presenter(this,getIntent().getBooleanExtra(PROMPT_FINGERPRINT_BUNDLE_FLAG,false));
}
private void performDefaultAction(Bundle savedInstanceState) {
if (savedInstanceState == null) {
loadHomeAsCurrentView();
presenter.getRequiredData();
presenter.checkIfFingerprintPromptShouldBeShown();
}
}
@ -401,6 +404,18 @@ public class HomeActivityV2 extends BaseActivity implements HomeParentViewContra
}
@Override
public Context getContext() {
return this;
}
@Override
public void showFingerprintAvailablityToUser() {
Intent intent=new Intent(this, FingerprintEnablePromptActivity.class);
startActivity(intent);
}
@Override
public void performLogout() {
presenter.clearAllData();

1
app/src/main/java/com/gmeremit/online/gmeremittance_native/loginV2/view/LoginV2Activity.java

@ -403,6 +403,7 @@ public class LoginV2Activity extends BaseActivity implements View.OnClickListene
public void redirectToDashboard() {
Intent intent = new Intent(this, HomeActivityV2.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra(HomeActivityV2.PROMPT_FINGERPRINT_BUNDLE_FLAG,true);
startActivity(intent);
finish();
}

11
app/src/main/java/com/gmeremit/online/gmeremittance_native/rewardV2/adapter/rewardlisting/OrderListingRvAdapter.java

@ -8,6 +8,7 @@ import android.view.ViewGroup;
import android.widget.TextView;
import com.gmeremit.online.gmeremittance_native.R;
import com.gmeremit.online.gmeremittance_native.rewardV2.model.rewardlisting.RewardOrderedProductItemModel;
import java.util.ArrayList;
import java.util.List;
@ -18,7 +19,7 @@ import butterknife.ButterKnife;
public class OrderListingRvAdapter extends RecyclerView.Adapter<OrderListingRvAdapter.OrderListingItemViewHolder> {
private final OrderItemSelectionListener listener;
private List<Object> data;
private ArrayList<RewardOrderedProductItemModel> data;
public OrderListingRvAdapter(OrderItemSelectionListener listener) {
this.listener = listener;
@ -34,6 +35,12 @@ public class OrderListingRvAdapter extends RecyclerView.Adapter<OrderListingRvAd
@Override
public void onBindViewHolder(@NonNull OrderListingItemViewHolder holder, int position) {
holder.branchName.setText(data.get(holder.getAdapterPosition()).getBranchName());
holder.dateTxt.setText(data.get(holder.getAdapterPosition()).getCreatedDate());
holder.orderIdTxt.setText(data.get(holder.getAdapterPosition()).getOrderId());
holder.orderNameTxt.setText(data.get(holder.getAdapterPosition()).getProductName());
holder.orderPointTxt.setText(data.get(holder.getAdapterPosition()).getUsePoint());
holder.statusTxt.setText(data.get(holder.getAdapterPosition()).getOrderStatus());
}
@ -42,7 +49,7 @@ public class OrderListingRvAdapter extends RecyclerView.Adapter<OrderListingRvAd
return data.size();
}
public void setData(List<Object> data) {
public void setData(ArrayList<RewardOrderedProductItemModel> data) {
if (data != null && data.size() > 0) {
this.data = data;
notifyDataSetChanged();

10
app/src/main/java/com/gmeremit/online/gmeremittance_native/rewardV2/adapter/rewardlisting/RewardListingRvAdapter.java

@ -14,6 +14,7 @@ import com.gmeremit.online.gmeremittance_native.R;
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.view.HomeMenuItemViewHolderV2;
import com.gmeremit.online.gmeremittance_native.rewardV2.model.rewardlisting.RewardProductItemModel;
import java.util.ArrayList;
import java.util.List;
@ -24,7 +25,7 @@ import butterknife.ButterKnife;
public class RewardListingRvAdapter extends RecyclerView.Adapter<RewardListingRvAdapter.RewardListingItemViewHolder> {
private final RewardCLickListener listener;
private List<Object> data;
private List<RewardProductItemModel> data;
public RewardListingRvAdapter(RewardCLickListener listener) {
this.listener = listener;
@ -41,15 +42,14 @@ public class RewardListingRvAdapter extends RecyclerView.Adapter<RewardListingRv
public void onBindViewHolder(@NonNull RewardListingItemViewHolder holder, int position) {
holder.redeemTitle.setText("");
holder.redeemPoint.setText("");
holder.redeemTitle.setText(data.get(holder.getAdapterPosition()).getProductName());
holder.redeemPoint.setText(data.get(holder.getAdapterPosition()).getPointPrice());
holder.redeemButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
Glide.with(holder.redeemItemImage.getContext())
.load("hasdf")
.into(holder.redeemItemImage);
@ -60,7 +60,7 @@ public class RewardListingRvAdapter extends RecyclerView.Adapter<RewardListingRv
return data.size();
}
public void setData(List<Object> data)
public void setData(ArrayList<RewardProductItemModel> data)
{
if(data!=null&&data.size()>0) {
this.data = data;

4
app/src/main/java/com/gmeremit/online/gmeremittance_native/rewardV2/gateway/rewardlisting/RewardListingV2Gateway.java

@ -27,8 +27,8 @@ public class RewardListingV2Gateway extends PrivilegedGateway implements RewardL
JsonObject jsonObject=new JsonObject();
jsonObject.addProperty("userId",userId);
jsonObject.addProperty("startDate","2019-04-01");
jsonObject.addProperty("endDate","2019-04-17");
jsonObject.addProperty("startDate",startDate);
jsonObject.addProperty("endDate",endDate);
return HttpClientV2.getInstance().getRewardOrderedProductList(auth,jsonObject);
}
}

74
app/src/main/java/com/gmeremit/online/gmeremittance_native/rewardV2/presenter/rewardlisting/RewardListingV2Presenter.java

@ -1,17 +1,21 @@
package com.gmeremit.online.gmeremittance_native.rewardV2.presenter.rewardlisting;
import android.util.Log;
import com.gmeremit.online.gmeremittance_native.R;
import com.gmeremit.online.gmeremittance_native.base.BasePresenter;
import com.gmeremit.online.gmeremittance_native.customwidgets.CustomAlertDialog;
import com.gmeremit.online.gmeremittance_native.rewardV2.gateway.rewardlisting.RewardListingV2Gateway;
import com.gmeremit.online.gmeremittance_native.rewardV2.model.rewardlisting.RewardOrderedProductItemModel;
import com.gmeremit.online.gmeremittance_native.rewardV2.model.rewardlisting.RewardProductItemModel;
import com.gmeremit.online.gmeremittance_native.utils.https.GenericApiObserverResponse;
import com.gmeremit.online.gmeremittance_native.utils.https.GenericResponseDataModel;
import com.gmeremit.online.gmeremittance_native.utils.https.HTTPConstants;
import com.gmeremit.online.gmeremittance_native.utils.https.HttpClientV2;
import com.google.gson.reflect.TypeToken;
import java.io.IOException;
import java.lang.reflect.Array;
import java.lang.reflect.Type;
import java.net.SocketTimeoutException;
import java.util.ArrayList;
@ -55,28 +59,61 @@ public class RewardListingV2Presenter extends BasePresenter implements RewardLis
}
@Override
public Observable<List<RewardProductItemModel>> subscribeToRewardFetchingEvent() {
public Observable<ArrayList<RewardOrderedProductItemModel>> getOrderedProductList(String startDate, String endDate) {
return this.gateway.getRewardOrderedProductList(this.gateway.getAuth(), this.gateway.getUserID(), startDate, endDate)
.subscribeOn(Schedulers.io())
.doOnSubscribe(subs -> view.showProgressBar(true, getStringfromStringId(R.string.processing_request_text)))
.doFinally(() -> view.showProgressBar(false, ""))
.doOnError(error -> {
if (error instanceof HttpException && ((HttpException) error).code() == 401) {
gateway.clearAllUserData();
}
})
.flatMap(response -> {
TypeToken productType = TypeToken.getParameterized(GenericResponseDataModel.class, ArrayList.class, RewardOrderedProductItemModel.class);
GenericResponseDataModel<ArrayList<RewardOrderedProductItemModel>> data = HttpClientV2.getDeserializer().fromJson(response.string(), productType.getType());
return Observable.just(data.getData());
}).observeOn(AndroidSchedulers.mainThread());
}
@Override
public Observable<ArrayList<RewardProductItemModel>> subscribeToRewardFetchingEvent() {
return rewardRelatedDataSubject.flatMap(rewardRelatedData -> Observable.just(rewardRelatedData.getRewardProductItemModels()));
}
@Override
public Observable<List<RewardOrderedProductItemModel>> subscribeToOrderListFetchingEvent() {
public Observable<ArrayList<RewardOrderedProductItemModel>> subscribeToOrderListFetchingEvent() {
return rewardRelatedDataSubject.flatMap(rewardRelatedData -> Observable.just(rewardRelatedData.getRewardOrderedProductItemModels()));
}
@Override
public String getCurrentRewardPoint() {
return gateway.getCustomerRewardPoint();
}
private Observable<List<RewardProductItemModel>> getAllProductListFromNetwork() {
TypeToken productType = TypeToken.getParameterized(GenericResponseDataModel.class, List.class, RewardProductItemModel.class);
private Observable<ArrayList<RewardProductItemModel>> getAllProductListFromNetwork() {
Type productType = new TypeToken<GenericResponseDataModel<ArrayList<RewardProductItemModel>>>() {
}.getType();
return this.gateway.getRewardProductList(this.gateway.getAuth())
.subscribeOn(Schedulers.io())
.flatMap(response -> HttpClientV2.getDeserializer().fromJson(response.string(), productType.getType()));
.flatMap(response -> {
GenericResponseDataModel<ArrayList<RewardProductItemModel>> data = HttpClientV2.getDeserializer().fromJson(response.string(), productType);
Log.d("RewardModule", data.getData().get(0).getProductName());
return Observable.just(data.getData());
});
}
private Observable<List<RewardOrderedProductItemModel>> getAllOrderedProductListFromNetwork() {
TypeToken productType = TypeToken.getParameterized(GenericResponseDataModel.class, List.class, RewardOrderedProductItemModel.class);
return this.gateway.getRewardOrderedProductList(this.gateway.getAuth(),this.gateway.getUserID(),"","")
private Observable<ArrayList<RewardOrderedProductItemModel>> getAllOrderedProductListFromNetwork() {
Type productType = new TypeToken<GenericResponseDataModel<ArrayList<RewardOrderedProductItemModel>>>() {
}.getType();
return this.gateway.getRewardOrderedProductList(this.gateway.getAuth(), this.gateway.getUserID(), "", "")
.subscribeOn(Schedulers.io())
.flatMap(response -> HttpClientV2.getDeserializer().fromJson(response.string(), productType.getType()));
.flatMap(response -> {
GenericResponseDataModel<ArrayList<RewardOrderedProductItemModel>> data = HttpClientV2.getDeserializer().fromJson(response.string(), productType);
return Observable.just(data.getData());
});
}
@Override
@ -90,20 +127,20 @@ public class RewardListingV2Presenter extends BasePresenter implements RewardLis
compositeDisposable.dispose();
}
public class RewardListingScreenModel {
List<RewardProductItemModel> rewardProductItemModels;
List<RewardOrderedProductItemModel> rewardOrderedProductItemModels;
public static class RewardListingScreenModel {
ArrayList<RewardProductItemModel> rewardProductItemModels;
ArrayList<RewardOrderedProductItemModel> rewardOrderedProductItemModels;
public RewardListingScreenModel(List<RewardProductItemModel> rewardProductItemModels, List<RewardOrderedProductItemModel> rewardOrderedProductItemModels) {
public RewardListingScreenModel(ArrayList<RewardProductItemModel> rewardProductItemModels, ArrayList<RewardOrderedProductItemModel> rewardOrderedProductItemModels) {
this.rewardProductItemModels = rewardProductItemModels;
this.rewardOrderedProductItemModels = rewardOrderedProductItemModels;
}
public List<RewardProductItemModel> getRewardProductItemModels() {
public ArrayList<RewardProductItemModel> getRewardProductItemModels() {
return rewardProductItemModels;
}
public List<RewardOrderedProductItemModel> getRewardOrderedProductItemModels() {
public ArrayList<RewardOrderedProductItemModel> getRewardOrderedProductItemModels() {
return rewardOrderedProductItemModels;
}
@ -114,15 +151,18 @@ public class RewardListingV2Presenter extends BasePresenter implements RewardLis
@Override
public void onNext(RewardListingScreenModel rewardListingScreenModel) {
rewardRelatedDataSubject.onNext(rewardListingScreenModel);
view.lazyInstatiateView();
}
@Override
public void onError(Throwable e) {
String errorMessage = "";
if (e instanceof HttpException) {
if (((HttpException) e).code() == 401)
if (((HttpException) e).code() == 401) {
errorMessage = (HTTPConstants.getErrorMessageFromCode(((HttpException) e).code()));
else
gateway.clearAllUserData();
view.showPopUpMessage(errorMessage, CustomAlertDialog.AlertType.ALERT, alertType -> view.logout());
} else
errorMessage = (HTTPConstants.getErrorMessageFromCode(((HttpException) e).code()));
} else if (e instanceof SocketTimeoutException) {
errorMessage = (HTTPConstants.HTTP_RESPONSE_NO_INTERNET);

9
app/src/main/java/com/gmeremit/online/gmeremittance_native/rewardV2/presenter/rewardlisting/RewardListingV2PresenterInterface.java

@ -5,6 +5,7 @@ import com.gmeremit.online.gmeremittance_native.base.BasePresenterInterface;
import com.gmeremit.online.gmeremittance_native.rewardV2.model.rewardlisting.RewardOrderedProductItemModel;
import com.gmeremit.online.gmeremittance_native.rewardV2.model.rewardlisting.RewardProductItemModel;
import java.util.ArrayList;
import java.util.List;
import io.reactivex.Observable;
@ -14,8 +15,12 @@ public interface RewardListingV2PresenterInterface extends BasePresenterInterfac
void fetchRewards();
Observable<List<RewardProductItemModel>> subscribeToRewardFetchingEvent();
Observable<List<RewardOrderedProductItemModel>> subscribeToOrderListFetchingEvent();
Observable<ArrayList<RewardOrderedProductItemModel>> getOrderedProductList(String startDate,String endDate);
Observable<ArrayList<RewardProductItemModel>> subscribeToRewardFetchingEvent();
Observable<ArrayList<RewardOrderedProductItemModel>> subscribeToOrderListFetchingEvent();
String getCurrentRewardPoint();
interface RewardListingV2ContractInterface extends BaseContractInterface
{

133
app/src/main/java/com/gmeremit/online/gmeremittance_native/rewardV2/view/rewardlisting/OrderHistoryFragment.java

@ -3,30 +3,55 @@ package com.gmeremit.online.gmeremittance_native.rewardV2.view.rewardlisting;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.gmeremit.online.gmeremittance_native.R;
import com.gmeremit.online.gmeremittance_native.base.BaseFragment;
import com.gmeremit.online.gmeremittance_native.customwidgets.CustomAlertDialog;
import com.gmeremit.online.gmeremittance_native.rewardV2.adapter.rewardlisting.OrderListingRvAdapter;
import com.gmeremit.online.gmeremittance_native.rewardV2.model.rewardlisting.RewardOrderedProductItemModel;
import com.gmeremit.online.gmeremittance_native.rewardV2.view.RewardParentActionListener;
import com.gmeremit.online.gmeremittance_native.utils.Utils;
import com.gmeremit.online.gmeremittance_native.utils.https.GenericApiObserverResponseV2;
import com.gmeremit.online.gmeremittance_native.utils.https.GenericResponseDataModel;
import com.gmeremit.online.gmeremittance_native.utils.https.HTTPConstants;
import com.gmeremit.online.gmeremittance_native.walletstatementV2.view.WalletStatementV2Activity;
import com.tsongkha.spinnerdatepicker.DatePicker;
import com.tsongkha.spinnerdatepicker.DateRangePickerDialog;
import com.tsongkha.spinnerdatepicker.SpinnerDateRangePickerDialogBuilder;
import java.io.IOException;
import java.net.SocketTimeoutException;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.observers.DisposableObserver;
import retrofit2.HttpException;
public class OrderHistoryFragment extends BaseFragment implements OrderListingRvAdapter.OrderItemSelectionListener {
public class OrderHistoryFragment extends BaseFragment implements OrderListingRvAdapter.OrderItemSelectionListener, View.OnClickListener {
@BindView(R.id.orderListRv)
RecyclerView orderListRv;
@BindView(R.id.tv_from_date)
TextView fromDateTv;
@BindView(R.id.tv_to_date)
TextView toDateTv;
@BindView(R.id.dateContainer)
View dateContainer;
@BindView(R.id.iv_calendar)
View calendarView;
private CompositeDisposable compositeDisposable;
private OrderListObserver orderListObserver;
@ -55,7 +80,7 @@ public class OrderHistoryFragment extends BaseFragment implements OrderListingR
}
private void setupRv() {
orderListAdapter=new OrderListingRvAdapter(this);
orderListAdapter = new OrderListingRvAdapter(this);
orderListRv.setAdapter(orderListAdapter);
}
@ -70,6 +95,18 @@ public class OrderHistoryFragment extends BaseFragment implements OrderListingR
}
@Override
public void onStart() {
super.onStart();
calendarView.setOnClickListener(this);
}
@Override
public void onStop() {
super.onStop();
calendarView.setOnClickListener(null);
}
@Override
public void onDestroy() {
@ -78,17 +115,101 @@ public class OrderHistoryFragment extends BaseFragment implements OrderListingR
compositeDisposable.dispose();
}
private void promptCalendarPicker() {
new SpinnerDateRangePickerDialogBuilder()
.context(getActivity())
.spinnerTheme(R.style.NumberPickerStyle)
.showTitle(true)
.showDaySpinner(true)
.defaultDate(1990, 0, 1)
.setCurrentDateAsMaxDate()
.minDate(2017, 9, 10)
.dialogTheme(R.style.DatePickerTheme)
.showTitle(true)
.setTitle(getString(R.string.filter_by_date_text))
.setFromTitle(getString(R.string.from_text) + " :")
.setToTitle(getString(R.string.to_text) + " :")
.setPositiveButtonText(getString(R.string.ok_text))
.setNegativeButtonText(getString(R.string.cancel_text))
.callback(new DateRangePickerDialog.OnRangeDateSetListener() {
private String startDate = "";
private String endDate = "";
@Override
public void onFromDateSet(DatePicker datePicker, int year, int monthOfYear, int dayOfMonth) {
startDate = Integer.toString(year) + "-" + Integer.toString(monthOfYear + 1) + "-" + Integer.toString(dayOfMonth);
fromDateTv.setText(Utils.formateDateFromstring(Utils.getDefaultDateFormat(), "MMM d, yyyy", startDate));
}
@Override
public void onToDateSet(DatePicker datePicker, int year, int monthOfYear, int dayOfMonth) {
endDate = Integer.toString(year) + "-" + Integer.toString(monthOfYear + 1) + "-" + Integer.toString(dayOfMonth);
toDateTv.setText(Utils.formateDateFromstring(Utils.getDefaultDateFormat(), "MMM d, yyyy", endDate));
}
@Override
public void onInvalidRangeSelected() {
showToastMessage(getString(R.string.invalid_date_range_selected));
}
@Override
public void onDateRangeReceivedSucess() {
if (dateContainer.getVisibility() != View.VISIBLE)
dateContainer.setVisibility(View.VISIBLE);
fetchOrderedList(startDate, endDate);
}
})
.build()
.show();
}
private void fetchOrderedList(String startDate, String endDate) {
public class OrderListObserver extends DisposableObserver<List<RewardOrderedProductItemModel>> {
compositeDisposable.add(
((RewardParentActionListener) getActivity()).getPresenter().getOrderedProductList(startDate, endDate).subscribeWith(new OrderListObserver())
);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.iv_calendar:
promptCalendarPicker();
break;
}
}
public class OrderListObserver extends DisposableObserver<ArrayList<RewardOrderedProductItemModel>> {
@Override
public void onNext(List<RewardOrderedProductItemModel> rewardOrderedProductItemModels) {
public void onNext(ArrayList<RewardOrderedProductItemModel> rewardOrderedProductItemModels) {
orderListAdapter.setData(rewardOrderedProductItemModels);
}
@Override
public void onError(Throwable e) {
String errorMessage = "";
if (e instanceof HttpException) {
if (((HttpException) e).code() == 401) {
errorMessage = (HTTPConstants.getErrorMessageFromCode(((HttpException) e).code()));
showPopUpMessage(errorMessage, CustomAlertDialog.AlertType.ALERT, alertType -> logout());
} else
errorMessage = (HTTPConstants.getErrorMessageFromCode(((HttpException) e).code()));
} else if (e instanceof SocketTimeoutException) {
errorMessage = (HTTPConstants.HTTP_RESPONSE_NO_INTERNET);
} else if (e instanceof IOException) {
errorMessage = (HTTPConstants.HTTP_RESPONSE_NO_INTERNET);
} else {
errorMessage = (e.getMessage());
}
showPopUpMessage(errorMessage, CustomAlertDialog.AlertType.FAILED, alertType -> exitView());
}
@Override

17
app/src/main/java/com/gmeremit/online/gmeremittance_native/rewardV2/view/rewardlisting/RewardListFragment.java

@ -2,10 +2,13 @@ package com.gmeremit.online.gmeremittance_native.rewardV2.view.rewardlisting;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.gmeremit.online.gmeremittance_native.R;
import com.gmeremit.online.gmeremittance_native.base.BaseFragment;
@ -17,6 +20,7 @@ import com.gmeremit.online.gmeremittance_native.rewardV2.view.RewardParentAction
import com.gmeremit.online.gmeremittance_native.utils.https.GenericApiObserverResponseV2;
import com.gmeremit.online.gmeremittance_native.utils.https.GenericResponseDataModel;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
@ -30,12 +34,16 @@ public class RewardListFragment extends BaseFragment implements RewardListingRvA
@BindView(R.id.rewards_rv)
RecyclerView rewardsRV;
@BindView(R.id.txt_reward_points)
TextView txt_reward_points;
private RewardListingRvAdapter rewardListingRvAdapter;
private RewardListObserver rewardlistObserver;
private CompositeDisposable compositeDisposable;
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_reward_list, container, false);
@ -51,7 +59,9 @@ public class RewardListFragment extends BaseFragment implements RewardListingRvA
private void performDefaultAction(Bundle savedInstanceState) {
if (savedInstanceState == null) {
txt_reward_points.setText(((RewardParentActionListener) getActivity()).getPresenter().getCurrentRewardPoint());
compositeDisposable.add(((RewardParentActionListener) getActivity()).getPresenter().subscribeToRewardFetchingEvent().subscribeWith(rewardlistObserver));
}
}
@ -65,6 +75,7 @@ public class RewardListFragment extends BaseFragment implements RewardListingRvA
private void setupRv() {
rewardListingRvAdapter = new RewardListingRvAdapter(this);
rewardsRV.setAdapter(rewardListingRvAdapter);
rewardsRV.setLayoutManager(new GridLayoutManager(getActivity(),2));
}
@ -81,12 +92,12 @@ public class RewardListFragment extends BaseFragment implements RewardListingRvA
}
public class RewardListObserver extends DisposableObserver<List<RewardProductItemModel>>{
public class RewardListObserver extends DisposableObserver<ArrayList<RewardProductItemModel>>{
@Override
public void onNext(List<RewardProductItemModel> rewardOrderedProductItemModels) {
public void onNext(ArrayList<RewardProductItemModel> rewardProductItemModels) {
rewardListingRvAdapter.setData(rewardProductItemModels);
}
@Override

3
app/src/main/java/com/gmeremit/online/gmeremittance_native/rewardV2/view/rewardlisting/RewardListingV2Activity.java

@ -19,6 +19,7 @@ import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
public class RewardListingV2Activity extends BaseActivity implements RewardListingV2PresenterInterface.RewardListingV2ContractInterface, RewardParentActionListener {
@ -39,6 +40,7 @@ public class RewardListingV2Activity extends BaseActivity implements RewardListi
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_reward_listing_v2);
ButterKnife.bind(this);
initialize();
performDefaultAction(savedInstanceState);
}
@ -86,7 +88,6 @@ public class RewardListingV2Activity extends BaseActivity implements RewardListi
viewPager.setOffscreenPageLimit(2);
viewPager.setAdapter(rewardlistingViewPagerAdapter);

22
app/src/main/java/com/gmeremit/online/gmeremittance_native/settings/view/FingerprintEnablePromptActivity.java

@ -5,6 +5,7 @@ import android.os.Handler;
import android.support.graphics.drawable.AnimatedVectorDrawableCompat;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
@ -45,6 +46,10 @@ public class FingerprintEnablePromptActivity extends BaseActivity implements Vie
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fingerprint_enable_prompt);
ButterKnife.bind(this);
Window window = getWindow();
if (window != null) {
window.getAttributes().windowAnimations = R.style.SlideInAnimation;
}
init();
performDefaultAction(savedInstanceState);
}
@ -68,21 +73,22 @@ public class FingerprintEnablePromptActivity extends BaseActivity implements Vie
}
void performDefaultAction(Bundle savedInstance) {
playFingerPrintAnimation(0);
playFingerPrintAnimation(350);
String manual = getString(R.string.setting_text) + " >> "+ getString(R.string.fingerprint_auth_text);
String manual = getString(R.string.setting_text) + " >> " + getString(R.string.fingerprint_auth_text);
tv_manual.setText(manual);
GmeApplication.getStorage().edit().putBoolean(PrefKeys.HAS_PROMPTED_USER_FOR_FINGERPRINT_FIRST_TIME,true).apply();
}
private boolean isBiometricDataAvailable() {
SharedPreferences sp = GmeApplication.getStorage();
return sp.getString(PrefKeys.APP_USER_ID_SECRET_KEY, null) != null && sp.getString(PrefKeys.APP_USER_SECRET_KEY, null) != null&&sp.getString(PrefKeys.APP_SECRET_KEY,null)!=null;
return sp.getString(PrefKeys.APP_USER_ID_SECRET_KEY, null) != null && sp.getString(PrefKeys.APP_USER_SECRET_KEY, null) != null && sp.getString(PrefKeys.APP_SECRET_KEY, null) != null;
}
private void showFingerprintAuthDialog()
{
private void showFingerprintAuthDialog() {
if (isBiometricDataAvailable()) {
FingerPrintAuthPromptDialog fingerPrintAuthPromptDialog = new FingerPrintAuthPromptDialog();
fingerPrintAuthPromptDialog.setFingerprintAuthListener(true, new FingerPrintAuthPromptDialog.FingerprintAuthListener() {
@ -157,13 +163,13 @@ public class FingerprintEnablePromptActivity extends BaseActivity implements Vie
@Override
public void onClick(View v) {
switch(v.getId()) {
switch (v.getId()) {
case R.id.btn_use_fingerprint :
case R.id.btn_use_fingerprint:
showFingerprintAuthDialog();
break;
case R.id.txt_not_use_fingerprint :
case R.id.txt_not_use_fingerprint:
finish();
break;
}

2
app/src/main/res/layout/fragment_reward_list.xml

@ -52,7 +52,6 @@
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:singleLine="false"
android:text="9999999999"
android:textColor="@color/white"
android:textSize="24sp"
app:layout_constraintBottom_toBottomOf="@+id/imageView6"
@ -87,7 +86,6 @@
android:id="@+id/rewards_rv"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layoutManager="android.support.v7.widget.GridLayoutManager"
android:layout_weight="1"
android:paddingEnd="14dp"
android:paddingStart="14dp" />

4
app/src/stag/google-services.json

@ -10,7 +10,7 @@
"client_info": {
"mobilesdk_app_id": "1:739883569758:android:5b4ad7782aa80f79",
"android_client_info": {
"package_name": "com.gmeremit.online.gmeremittance_native.stag"
"package_name": "com.gmeremit.online.gmeremittance_native"
}
},
"oauth_client": [
@ -18,7 +18,7 @@
"client_id": "739883569758-ie4mgucpasd3mtjt217u22lliiec8rva.apps.googleusercontent.com",
"client_type": 1,
"android_info": {
"package_name": "com.gmeremit.online.gmeremittance_native.stag",
"package_name": "com.gmeremit.online.gmeremittance_native",
"certificate_hash": "899e8b46832d0e33ea0b16c07a16f5a12aececd2"
}
},

Loading…
Cancel
Save