Przeglądaj źródła

[공통][New] 마이 코인 배너 링크 세부 처리

hyodong.min 7 lat temu
rodzic
commit
bb0b9439a8

+ 3 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/Event.java

@@ -185,9 +185,11 @@ public class Event {
   public static final int MEMBER_PHONE_NUMBER = 1030;
   public static final int BOOKMARK_CATEGORY = 1031;
   public static final int BOOKMARK_LATEST = 1032;
-  public static final int COIN_LOADING = 1033;
+  public static final int LOADING_COIN = 1033;
   public static final int LOADED_FILTER = 1034;
   public static final int LOADED_POPUP_INFO = 1035;
+  public static final int LOADED_BUCKET = 1036;
+  public static final int LOADED_GOODS = 1037;
 
 
   // boolean

+ 2 - 2
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/main/MainModel.java

@@ -166,12 +166,12 @@ public class MainModel extends Model {
     disposableBucket = BucketListModelHelper.getInstance().loadMyBucketList(new BucketListRequestBean(1, 1000, ""), new APIModuleSimpleListener<BucketListResultBean>(waiterCaller) {
       @Override
       public void onApiSuccess(BucketListResultBean resultBean) {
-        onResult(new Event.Builder(Event.RESULT).build());
+        onResult(new Event.Builder(Event.RESULT).integer(Event.LOADED_BUCKET).build());
       }
 
       @Override
       public void onApiError(String errorMessage, APIError error) {
-        onResult(new Event.Builder(Event.ERROR).string(errorMessage).build());
+        onResult(new Event.Builder(Event.ERROR).integer(Event.LOADED_BUCKET).string(errorMessage).build());
       }
     });
   }

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

@@ -424,6 +424,7 @@ public class MainPresenter extends Presenter<MainModel, IMainView> {
             go(ScreenID.UTILITY_ACTIVITY);
             break;
           default:
+            // 원래 액티비티로 표시되는 화면들.
             go(screenId);
             break;
         }

+ 31 - 4
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/my/coin/MyCoinMainModel.java

@@ -4,6 +4,8 @@ import java.util.List;
 
 import io.reactivex.disposables.Disposable;
 import kr.co.zumo.app.R;
+import kr.co.zumo.app.lifeplus.bean.api.BucketListRequestBean;
+import kr.co.zumo.app.lifeplus.bean.api.BucketListResultBean;
 import kr.co.zumo.app.lifeplus.bean.api.CoinBannerBean;
 import kr.co.zumo.app.lifeplus.bean.api.CoinBannerResultBean;
 import kr.co.zumo.app.lifeplus.bean.api.CoinInfoRequestBean;
@@ -20,6 +22,7 @@ import kr.co.zumo.app.lifeplus.model.module.APIModuleSimpleListener;
 import kr.co.zumo.app.lifeplus.model.module.coop.CoopRecommendGoodsModule;
 import kr.co.zumo.app.lifeplus.util.ResourceUtil;
 import kr.co.zumo.app.lifeplus.view.Event;
+import kr.co.zumo.app.lifeplus.view.screen.my.bucketlist.BucketListModelHelper;
 
 /**
  * MyCoinDetailModel
@@ -38,6 +41,7 @@ public class MyCoinMainModel extends Model {
   private Disposable disposableCoin;
   private Disposable disposableBanner;
   private List<CoinBannerBean> coinBannerBeans;
+  private Disposable disposableBucket;
 
   @Override
   protected void createViewInternal() {
@@ -57,6 +61,10 @@ public class MyCoinMainModel extends Model {
       disposableBanner.dispose();
       disposableBanner = null;
     }
+    if (null != disposableBucket) {
+      disposableBucket.dispose();
+      disposableBucket = null;
+    }
 
   }
 
@@ -104,12 +112,12 @@ public class MyCoinMainModel extends Model {
       public void onApiSuccess(CoopRecommendBean resultBean) {
         coopRecommendBean = resultBean;
 
-        onResult(new Event.Builder(Event.RESULT).build());
+        onResult(new Event.Builder(Event.RESULT).integer(Event.LOADED_GOODS).build());
       }
 
       @Override
       public void onApiError(String errorMessage, APIError error) {
-        onResult(new Event.Builder(Event.ERROR).string(errorMessage).build());
+        onResult(new Event.Builder(Event.ERROR).integer(Event.LOADED_GOODS).string(errorMessage).build());
       }
     });
   }
@@ -122,12 +130,12 @@ public class MyCoinMainModel extends Model {
     disposableCoin = CoinModelHelper.getInstance().loadCoinInfo(new CoinInfoRequestBean(), new APIModuleSimpleListener<CoinInfoResultBean>(waiterCaller) {
       @Override
       public void onApiSuccess(CoinInfoResultBean resultBean) {
-        onResult(new Event.Builder(Event.RESULT).integer(Event.COIN_LOADING).build());
+        onResult(new Event.Builder(Event.RESULT).integer(Event.LOADING_COIN).build());
       }
 
       @Override
       public void onApiError(String errorMessage, APIError error) {
-        onResult(new Event.Builder(Event.ERROR).integer(Event.COIN_LOADING).string(errorMessage).build());
+        onResult(new Event.Builder(Event.ERROR).integer(Event.LOADING_COIN).string(errorMessage).build());
       }
     });
   }
@@ -151,4 +159,23 @@ public class MyCoinMainModel extends Model {
       }
     });
   }
+
+  public void loadMyBucket() {
+    disposableBucket = BucketListModelHelper.getInstance().loadMyBucketList(new BucketListRequestBean(1, 1000, ""), new APIModuleSimpleListener<BucketListResultBean>(waiterCaller) {
+      @Override
+      public void onApiSuccess(BucketListResultBean resultBean) {
+        onResult(new Event.Builder(Event.RESULT).integer(Event.LOADED_BUCKET).build());
+      }
+
+      @Override
+      public void onApiError(String errorMessage, APIError error) {
+        onResult(new Event.Builder(Event.ERROR).integer(Event.LOADED_BUCKET).string(errorMessage).build());
+      }
+    });
+  }
+
+  public int getBucketCount() {
+    return BucketListModelHelper.getInstance().getBucketCount();
+  }
+
 }

+ 87 - 6
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/my/coin/MyCoinMainPresenter.java

@@ -1,9 +1,15 @@
 package kr.co.zumo.app.lifeplus.view.screen.my.coin;
 
+import kr.co.zumo.app.lifeplus.bean.ContentsDeliveryBean;
+import kr.co.zumo.app.lifeplus.bean.ContentsWebDeliveryBean;
+import kr.co.zumo.app.lifeplus.bean.UtilityActivityBean;
+import kr.co.zumo.app.lifeplus.bean.api.LifeplusContentsBean;
+import kr.co.zumo.app.lifeplus.bean.api.LinkBean;
 import kr.co.zumo.app.lifeplus.supervisor.ScreenID;
 import kr.co.zumo.app.lifeplus.util.StringUtil;
 import kr.co.zumo.app.lifeplus.view.DoubleChecker;
 import kr.co.zumo.app.lifeplus.view.Event;
+import kr.co.zumo.app.lifeplus.view.presenter.LinkInvoker;
 import kr.co.zumo.app.lifeplus.view.presenter.Presenter;
 
 /**
@@ -65,6 +71,7 @@ public class MyCoinMainPresenter extends Presenter<MyCoinMainModel, IMyCoinMainV
     model.loadRecommendGoods();
     model.loadCoinInfo();
     model.loadBanner();
+    model.loadMyBucket();
   }
 
   @Override
@@ -96,9 +103,9 @@ public class MyCoinMainPresenter extends Presenter<MyCoinMainModel, IMyCoinMainV
         break;
       case Event.BANNER:
         // 하단 배너
-//        if (LinkInvoker.invoke(MyCoinMainPresenter.this, model.getCoinBannerBeans().get(event.getIndex())) == false) {
-//          showToast("Invalid Link");
-//        }
+        if (invoke(model.getCoinBannerBeans().get(event.getIndex())) == false) {
+          showToast("Invalid Link");
+        }
         break;
       default:
         break;
@@ -106,22 +113,96 @@ public class MyCoinMainPresenter extends Presenter<MyCoinMainModel, IMyCoinMainV
 
   }
 
+  protected boolean invoke(LinkBean linkBean) {
+    boolean isSuccess = true;
+    /*
+    링크 구분 코드
+    01:외부URL, 02:컨텐츠, 03:이벤트, 04:특정메뉴
+     */
+    switch (linkBean.getLinkType()) {
+      case LinkBean.TYPE_CONTENTS:
+        LifeplusContentsBean bean = new LifeplusContentsBean();
+        bean.setContentsNo(linkBean.getLink());
+        ContentsDeliveryBean contentsDeliveryBean = new ContentsDeliveryBean.Builder(bean).build();
+
+        model.setDeliveryPackaging(contentsDeliveryBean);
+        go(ScreenID.CONTENTS);
+        break;
+      case LinkBean.TYPE_URL:
+        ContentsWebDeliveryBean contentsWebDeliveryBean = new ContentsWebDeliveryBean(null, -1, linkBean.getLink());
+
+        model.setDeliveryPackaging(contentsWebDeliveryBean);
+        go(ScreenID.WEB_FROM_CONTENTS);
+        break;
+      case LinkBean.TYPE_EVENT:
+        go(ScreenID.EVENT);
+        break;
+      case LinkBean.TYPE_MENU:
+        @ScreenID.ID int screenId = LinkInvoker.getScreenIdByApiId(linkBean.getLink());
+
+        /**
+         * Main 에서 직접 프래그먼트를 전환하면 정상 작동이 되지 않으므로 액티비티에 담아서 프래그먼트를 표시한다.
+         */
+        UtilityActivityBean utilityActivityBean = new UtilityActivityBean();
+        switch (screenId) {
+          case ScreenID.MY_MAIN:
+          case ScreenID.MY_COIN_MAIN:
+            utilityActivityBean.setScreenId(screenId);
+            model.setDeliveryPackaging(utilityActivityBean);
+            go(ScreenID.UTILITY_ACTIVITY);
+            break;
+          case ScreenID.BUCKET_ACTIVITY:
+            if (model.getBucketCount() == 0) {
+              utilityActivityBean.setScreenId(ScreenID.BUCKET_BEST);
+            }
+            else {
+              utilityActivityBean.setScreenId(ScreenID.MY_BUCKET_LIST);
+            }
+            model.setDeliveryPackaging(utilityActivityBean);
+            go(ScreenID.UTILITY_ACTIVITY);
+            break;
+          case ScreenID.SETTING_MEMBER_INFO:
+            confirmPin(() -> {
+              utilityActivityBean.setScreenId(ScreenID.SETTING_MEMBER_INFO);
+              model.setDeliveryPackaging(utilityActivityBean);
+              go(ScreenID.UTILITY_ACTIVITY);
+            });
+            break;
+          case ScreenID.SETTING_CODE:
+            utilityActivityBean.setScreenId(ScreenID.SETTING_CODE);
+            model.setDeliveryPackaging(utilityActivityBean);
+            go(ScreenID.UTILITY_ACTIVITY);
+            break;
+          default:
+            // 원래 액티비티로 표시되는 화면들.
+            go(screenId);
+            break;
+        }
+        break;
+      default:
+        isSuccess = false;
+        break;
+    }
+
+    return isSuccess;
+  }
+
   @Override
   public void onResult(Event event) {
     switch (event.getEventId()) {
       case Event.RESULT:
-        if (event.getInteger() == Event.COIN_LOADING) {
+        if (event.getInteger() == Event.LOADING_COIN) {
           doubleCheckerCoin.checkSecond();
         }
         else if (event.getInteger() == Event.LOADED_BANNER) {
           doubleCheckerBanner.checkSecond();
         }
-        else {
+        else if (event.getInteger() == Event.LOADED_GOODS) {
           doubleChecker.checkSecond();
         }
         break;
       case Event.ERROR:
-        if (event.getInteger() == Event.COIN_LOADING) {
+        if (event.getInteger() == Event.LOADING_COIN) {
           doubleCheckerCoin.checkSecond();
         }
         else {

+ 2 - 2
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/my/main/MyMainModel.java

@@ -316,12 +316,12 @@ public class MyMainModel extends Model {
     disposableCoin = CoinModelHelper.getInstance().loadCoinInfo(new CoinInfoRequestBean(), new APIModuleSimpleListener<CoinInfoResultBean>(waiterCaller) {
       @Override
       public void onApiSuccess(CoinInfoResultBean resultBean) {
-        onResult(new Event.Builder(Event.RESULT).integer(Event.COIN_LOADING).build());
+        onResult(new Event.Builder(Event.RESULT).integer(Event.LOADING_COIN).build());
       }
 
       @Override
       public void onApiError(String errorMessage, APIError error) {
-        onResult(new Event.Builder(Event.ERROR).integer(Event.COIN_LOADING).string(errorMessage).build());
+        onResult(new Event.Builder(Event.ERROR).integer(Event.LOADING_COIN).string(errorMessage).build());
       }
     });
   }

+ 2 - 2
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/my/main/MyMainPresenter.java

@@ -313,7 +313,7 @@ public class MyMainPresenter extends Presenter<MyMainModel, IMyMainView> {
         }
         break;
       case Event.RESULT:
-        if (integer == Event.COIN_LOADING) {
+        if (integer == Event.LOADING_COIN) {
           doubleCheckerCoin.checkSecond();
         }
         else {
@@ -335,7 +335,7 @@ public class MyMainPresenter extends Presenter<MyMainModel, IMyMainView> {
         else if (integer == Event.SETTING_LOAD) {
           showErrorDialog(R.string.network_disconnected_message);
         }
-        else if (integer == Event.COIN_LOADING) {
+        else if (integer == Event.LOADING_COIN) {
           doubleCheckerCoin.checkSecond();
           Log.e("APP#  MyMainPresenter | onResult", "| coin loading error: -> " + event.getString());
         }

+ 29 - 2
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/setting/code/SettingCodeModel.java

@@ -9,12 +9,17 @@ import io.reactivex.disposables.Disposable;
 import kr.co.zumo.app.lifeplus.bean.api.CodeBean;
 import kr.co.zumo.app.lifeplus.bean.api.MemberCodeRequestBean;
 import kr.co.zumo.app.lifeplus.bean.api.MemberCodeResultBean;
+import kr.co.zumo.app.lifeplus.bean.api.RequestBean;
+import kr.co.zumo.app.lifeplus.bean.api.SettingMemberBean;
+import kr.co.zumo.app.lifeplus.bean.api.SettingMemberResultBean;
 import kr.co.zumo.app.lifeplus.model.Model;
 import kr.co.zumo.app.lifeplus.model.module.APIError;
 import kr.co.zumo.app.lifeplus.model.module.APIMemberCodeRegisterModule;
 import kr.co.zumo.app.lifeplus.model.module.APIModuleListener;
+import kr.co.zumo.app.lifeplus.model.module.APIModuleSimpleListener;
 import kr.co.zumo.app.lifeplus.model.verify.Verifier;
 import kr.co.zumo.app.lifeplus.view.Event;
+import kr.co.zumo.app.lifeplus.view.screen.setting.MemberInfoModelHelper;
 import kr.co.zumo.app.lifeplus.view.screen.setting.SettingModelHelper;
 
 /**
@@ -53,6 +58,7 @@ public class SettingCodeModel extends Model {
   @Override
   protected void createViewInternal() {
   }
+
   @Override
   protected void destroyInternal() {
     disposeObservable();
@@ -195,8 +201,29 @@ public class SettingCodeModel extends Model {
     /*
        API 변경에 대비해 load / result 를 그대로 둔다.
      */
-    parseCodes();
-    onResult(new Event.Builder(Event.RESULT).integer(Event.CODE_LOAD).build());
+    disposableLoading = MemberInfoModelHelper.getInstance().loadMemberInfo(new RequestBean(), new APIModuleSimpleListener<SettingMemberResultBean>(waiterCaller) {
+      @Override
+      public void onApiSuccess(SettingMemberResultBean resultBean) {
+        SettingModelHelper.getInstance().setSettingMemberBean(resultBean.getData());
+        SettingMemberBean settingMemberBean = SettingModelHelper.getInstance().getSettingMemberBean();
+
+        parseCodes();
+
+        if (null == settingMemberBean) {
+          settingMemberBean = new SettingMemberBean();
+          SettingModelHelper.getInstance().setSettingMemberBean(settingMemberBean);
+          onResult(new Event.Builder(Event.ERROR).integer(Event.SETTING_LOAD).build());
+        }
+        else {
+          onResult(new Event.Builder(Event.RESULT).integer(Event.SETTING_LOAD).build());
+        }
+      }
+
+      @Override
+      public void onApiError(String errorMessage, APIError error) {
+        onResult(new Event.Builder(Event.ERROR).integer(Event.SETTING_LOAD).string(errorMessage).build());
+      }
+    });
   }
 
   /**

+ 1 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/setting/code/SettingCodePresenter.java

@@ -90,7 +90,7 @@ public class SettingCodePresenter extends Presenter<SettingCodeModel, ISettingCo
     int resultIndex = event.getInteger();
     switch (event.getEventId()) {
       case Event.RESULT:
-        if (resultIndex == Event.CODE_LOAD) {
+        if (resultIndex == Event.SETTING_LOAD) {
           doubleChecker.checkSecond();
         }
         else if (resultIndex == Event.CODE_REGISTER) {