Przeglądaj źródła

[공통][New] 프로모션/마이 코인 배너 OS 필터링

hyodong.min 7 lat temu
rodzic
commit
e93c167612

+ 47 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/model/module/APIPopupLoadModule.java

@@ -3,9 +3,15 @@
  */
 package kr.co.zumo.app.lifeplus.model.module;
 
+import java.util.List;
+
 import io.reactivex.Single;
+import io.reactivex.functions.Function;
+import kr.co.zumo.app.lifeplus.bean.api.PopupInfoListBean;
 import kr.co.zumo.app.lifeplus.bean.api.PopupInfoResultBean;
+import kr.co.zumo.app.lifeplus.bean.api.PromotionPopupBean;
 import kr.co.zumo.app.lifeplus.bean.api.RequestBean;
+import kr.co.zumo.app.lifeplus.bean.api.SystemPopupBean;
 import kr.co.zumo.app.lifeplus.network.api.LifeplusAPIRepository;
 
 /**
@@ -21,6 +27,46 @@ import kr.co.zumo.app.lifeplus.network.api.LifeplusAPIRepository;
 public class APIPopupLoadModule extends LifeplusAPIModule<RequestBean, PopupInfoResultBean> {
   @Override
   protected Single<PopupInfoResultBean> getAPI(RequestBean requestBean) {
-    return new LifeplusAPIRepository().getPopupInfo(requestBean);
+    return new LifeplusAPIRepository().getPopupInfo(requestBean).map(new Function<PopupInfoResultBean, PopupInfoResultBean>() {
+      @Override
+      public PopupInfoResultBean apply(PopupInfoResultBean popupInfoResultBean) throws Exception {
+
+        // 적용 OS 구분
+        if (null != popupInfoResultBean && null != popupInfoResultBean.getData()) {
+          PopupInfoListBean popupInfoListBean = popupInfoResultBean.getData();
+          int len;
+          if (null != popupInfoListBean) {
+            List<PromotionPopupBean> promotionPopupBeans = popupInfoListBean.getPromotionPopupList();
+            if (null != promotionPopupBeans && promotionPopupBeans.size() > 0) {
+              len = promotionPopupBeans.size();
+              PromotionPopupBean promotionPopupBean;
+              for (int i = len - 1; i >= 0; --i) {
+                promotionPopupBean = promotionPopupBeans.get(i);
+                if (promotionPopupBean.getOsType().equals(PromotionPopupBean.OS_TYPE_ALL) == false
+                  && promotionPopupBean.getOsType().equals(PromotionPopupBean.OS_TYPE_ANDROID) == false) {
+                  promotionPopupBeans.remove(i);
+                }
+              }
+
+            }
+
+            List<SystemPopupBean> systemPopupBeans = popupInfoListBean.getSystemPopupList();
+            if (null != systemPopupBeans && systemPopupBeans.size() > 0) {
+              len = systemPopupBeans.size();
+              SystemPopupBean systemPopupBean;
+              for (int i = len - 1; i >= 0; --i) {
+                systemPopupBean = systemPopupBeans.get(i);
+                if (systemPopupBean.getOsType().equals(PromotionPopupBean.OS_TYPE_ALL) == false
+                  && systemPopupBean.getOsType().equals(PromotionPopupBean.OS_TYPE_ANDROID) == false) {
+                  systemPopupBeans.remove(i);
+                }
+              }
+            }
+          }
+        }
+
+        return popupInfoResultBean;
+      }
+    });
   }
 }

+ 6 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/main/MainPresenter.java

@@ -33,6 +33,7 @@ import kr.co.zumo.app.lifeplus.view.dialog.PromotionDialog;
 import kr.co.zumo.app.lifeplus.view.presenter.LinkInvoker;
 import kr.co.zumo.app.lifeplus.view.presenter.Presenter;
 import kr.co.zumo.app.lifeplus.view.screen.category.CategoryID;
+import kr.co.zumo.app.lifeplus.view.screen.my.coin.MyCoinMainPresenter;
 
 /**
  * MainPresenter
@@ -363,6 +364,11 @@ public class MainPresenter extends Presenter<MainModel, IMainView> {
       .show();
   }
 
+  /**
+   * {@link MyCoinMainPresenter} 와 중복 코드, 리팩토링 필요
+   *
+   * bucket 리스트를 우선 로딩하지 않고 선택 후 로딩하는 방식으로 수정
+   */
   protected boolean invoke(LinkBean linkBean) {
     boolean isSuccess = true;
     /*