Переглянути джерело

[설정][Common] SettingModelHelper refactoring

hyodong.min 6 роки тому
батько
коміт
148a3754ff

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

@@ -31,7 +31,7 @@ import kr.co.zumo.app.lifeplus.view.Event;
 import kr.co.zumo.app.lifeplus.view.IEventListener;
 import kr.co.zumo.app.lifeplus.view.dialog.ShareDialog;
 import kr.co.zumo.app.lifeplus.view.screen.my.bookmark.BookmarkModelHelper;
-import kr.co.zumo.app.lifeplus.view.screen.setting.SettingModelHelper;
+import kr.co.zumo.app.lifeplus.view.screen.setting.MemberInfoModelHelper;
 
 /**
  * ContentsModel
@@ -398,7 +398,7 @@ public class ContentsModel extends ContentsBaseModel {
   }
 
   public String getMemberSpecialCode() {
-    return SettingModelHelper.getInstance().getSpecialCode();
+    return MemberInfoModelHelper.getInstance().getSpecialCode();
   }
 
   /**

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

@@ -74,6 +74,7 @@ public class MemberInfoModelHelper {
         public void onApiEnd() {
           listener.onApiEnd();
         }
+
         @Override
         public void onApiSuccess(SettingMemberResultBean resultBean) {
           settingMemberBean = resultBean.getData();
@@ -107,11 +108,42 @@ public class MemberInfoModelHelper {
    * @param code
    */
   public void setRecommendCode(String code) {
-    if(null != settingMemberBean) {
+    if (null != settingMemberBean) {
       settingMemberBean.setRecommendCode(code);
     }
   }
 
+  public String getRecommendCode() {
+    return settingMemberBean.getRecommendCode();
+  }
+
+  /**
+   * 스페셜 코드
+   *
+   * @return
+   */
+  public String getSpecialCode() {
+    return settingMemberBean.getSpecialCode();
+  }
+
+  public void setSpecialCode(String specialCode) {
+    settingMemberBean.setSpecialCode(specialCode);
+  }
+
+
+  /**
+   * 스페셜 코드 타입
+   *
+   * @return
+   */
+  public String getSpecialCodeType() {
+    return settingMemberBean.getSpecialCodeType();
+  }
+
+  public void setSpecialCodeType(String specialCodeType) {
+    settingMemberBean.setSpecialCodeType(specialCodeType);
+  }
+
 
   private void stopLoading() {
     if (null != disposableLoading) {

+ 11 - 18
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/setting/SettingModel.java

@@ -103,27 +103,20 @@ public class SettingModel extends Model {
    * 설정 기본 정보 로딩
    */
   public void loadSettingInfo() {
-    disposableLoading = MemberInfoModelHelper.getInstance().loadMemberInfo(new RequestBean(), new APIModuleListener<SettingMemberResultBean>(waiterCaller) {
-      @Override
-      public void onApiSuccess(SettingMemberResultBean resultBean) {
-        SettingModelHelper.getInstance().setSettingMemberBean(resultBean.getData());
-        settingMemberBean = SettingModelHelper.getInstance().getSettingMemberBean();
-
-        if (null == settingMemberBean) {
-          settingMemberBean = new SettingMemberBean();
-          SettingModelHelper.getInstance().setSettingMemberBean(settingMemberBean);
-          onResult(new Event.Builder(Event.ERROR).integer(Event.SETTING_LOAD).build());
-        }
-        else {
+    disposableLoading = MemberInfoModelHelper.getInstance().loadMemberInfo(new RequestBean(),
+      new SettingModelHelper.Listener(new APIModuleListener<SettingMemberResultBean>(waiterCaller) {
+        @Override
+        public void onApiSuccess(SettingMemberResultBean resultBean) {
+          settingMemberBean = resultBean.getData();
           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());
-      }
-    });
+        @Override
+        public void onApiError(String errorMessage, APIError error) {
+          onResult(new Event.Builder(Event.ERROR).integer(Event.SETTING_LOAD).string(errorMessage).build());
+        }
+      })
+    );
   }
 
   /**

+ 50 - 10
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/setting/SettingModelHelper.java

@@ -3,7 +3,13 @@
  */
 package kr.co.zumo.app.lifeplus.view.screen.setting;
 
+import kr.co.zumo.app.R;
 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.module.APIError;
+import kr.co.zumo.app.lifeplus.model.module.APIModuleListener;
+import kr.co.zumo.app.lifeplus.model.module.IAPIModuleListener;
+import kr.co.zumo.app.lifeplus.util.ResourceUtil;
 
 /**
  * SettingModelHelper
@@ -26,8 +32,6 @@ public class SettingModelHelper {
   private SettingModelHelper() {
   }
 
-  private SettingMemberBean settingMemberBean;
-
   private String specialCode = "";
   private String recommendCode = "";
   private String recommendName = "";
@@ -83,17 +87,53 @@ public class SettingModelHelper {
     this.recommendCode = recommendCode;
   }
 
-  public SettingMemberBean getSettingMemberBean() {
-    return settingMemberBean;
+  private void setSettingMemberBean(SettingMemberBean settingMemberBean) {
+    if (null != settingMemberBean) {
+      setRecommendCode(settingMemberBean.getRecommendCode());
+      setSpecialCode(settingMemberBean.getSpecialCode());
+      setSpecialCodeType(settingMemberBean.getSpecialCodeType());
+    }
   }
 
-  public void setSettingMemberBean(SettingMemberBean settingMemberBean) {
-    this.settingMemberBean = settingMemberBean;
+  /**
+   * SettingModelHelper 설정을 위한 리스너
+   */
+  public static class Listener implements IAPIModuleListener<SettingMemberResultBean> {
+    private APIModuleListener<SettingMemberResultBean> listener;
+
+    public Listener(APIModuleListener<SettingMemberResultBean> listener) {
+      this.listener = listener;
+    }
+
+    @Override
+    public void onApiSuccess(SettingMemberResultBean resultBean) {
+      SettingMemberBean settingMemberBean = resultBean.getData();
+      SettingModelHelper.getInstance().setSettingMemberBean(settingMemberBean);
+
+      if (null == settingMemberBean) {
+        settingMemberBean = new SettingMemberBean();
+        SettingModelHelper.getInstance().setSettingMemberBean(settingMemberBean);
+
+        listener.onApiError(ResourceUtil.getString(R.string.network_disconnected_message), new APIError(APIError.ERROR_INVALID_RESULT));
+      }
+      else {
+        listener.onApiSuccess(resultBean);
+      }
+    }
+
+    @Override
+    public void onApiError(String errorMessage, APIError error) {
+      listener.onApiError(errorMessage, error);
+    }
+
+    @Override
+    public void onApiStart() {
+      listener.onApiStart();
+    }
 
-    if (null != this.settingMemberBean) {
-      setRecommendCode(this.settingMemberBean.getRecommendCode());
-      setSpecialCode(this.settingMemberBean.getSpecialCode());
-      setSpecialCodeType(this.settingMemberBean.getSpecialCodeType());
+    @Override
+    public void onApiEnd() {
+      listener.onApiEnd();
     }
   }
 }

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

@@ -10,7 +10,6 @@ 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.CoinModel;
 import kr.co.zumo.app.lifeplus.model.module.APIError;
@@ -194,29 +193,23 @@ public class SettingCodeModel extends CoinModel {
     /*
        API 변경에 대비해 load / result 를 그대로 둔다.
      */
-    disposableLoading = MemberInfoModelHelper.getInstance().loadMemberInfo(new RequestBean(), new APIModuleListener<SettingMemberResultBean>(waiterCaller) {
-      @Override
-      public void onApiSuccess(SettingMemberResultBean resultBean) {
-        SettingModelHelper.getInstance().setSettingMemberBean(resultBean.getData());
-        SettingMemberBean settingMemberBean = SettingModelHelper.getInstance().getSettingMemberBean();
+    disposableLoading = MemberInfoModelHelper.getInstance().loadMemberInfo(new RequestBean(),
 
-        parseCodes();
+      new SettingModelHelper.Listener(new APIModuleListener<SettingMemberResultBean>(waiterCaller) {
+        @Override
+        public void onApiSuccess(SettingMemberResultBean resultBean) {
+
+          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());
-      }
-    });
+        @Override
+        public void onApiError(String errorMessage, APIError error) {
+          onResult(new Event.Builder(Event.ERROR).integer(Event.SETTING_LOAD).string(errorMessage).build());
+        }
+      })
+    );
   }
 
   /**
@@ -258,12 +251,14 @@ public class SettingCodeModel extends CoinModel {
         if (null != codeBean) {
           SettingModelHelper.getInstance().setRecommendName(codeBean.getRecommendName());
           SettingModelHelper.getInstance().setSpecialCodeType(codeBean.getSpecialCodeType());
+          MemberInfoModelHelper.getInstance().setSpecialCodeType(codeBean.getSpecialCodeType());
           SettingModelHelper.getInstance().setIncreasedCoin(codeBean.getIntCoin());
           setGivenCoin(codeBean.getIntCoin());
         }
 
         if (Verifier.isOk(verifySpecialCodeInternal(specialCode))) {
           SettingModelHelper.getInstance().setSpecialCode(specialCode);
+          MemberInfoModelHelper.getInstance().setSpecialCode(recommendCode);
           codeResult[CODE_SPECIAL_RESULT_INDEX] = true;
         }
 

+ 12 - 19
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/setting/member/SettingMemberInfoModel.java

@@ -111,27 +111,20 @@ public class SettingMemberInfoModel extends Model {
    */
   public void loadMemberInfo() {
 
-    disposableLoading = MemberInfoModelHelper.getInstance().loadMemberInfo(new RequestBean(), new APIModuleListener<SettingMemberResultBean>(waiterCaller) {
-      @Override
-      public void onApiSuccess(SettingMemberResultBean resultBean) {
-        SettingModelHelper.getInstance().setSettingMemberBean(resultBean.getData());
-        settingMemberBean = SettingModelHelper.getInstance().getSettingMemberBean();
-
-        if (null == settingMemberBean) {
-          settingMemberBean = new SettingMemberBean();
-          SettingModelHelper.getInstance().setSettingMemberBean(settingMemberBean);
-          onResult(new Event.Builder(Event.ERROR).integer(Event.SETTING_LOAD).build());
-        }
-        else {
+    disposableLoading = MemberInfoModelHelper.getInstance().loadMemberInfo(new RequestBean(),
+      new SettingModelHelper.Listener(new APIModuleListener<SettingMemberResultBean>(waiterCaller) {
+        @Override
+        public void onApiSuccess(SettingMemberResultBean resultBean) {
+          settingMemberBean = resultBean.getData();
           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());
-      }
-    });
+        @Override
+        public void onApiError(String errorMessage, APIError error) {
+          onResult(new Event.Builder(Event.ERROR).integer(Event.SETTING_LOAD).string(errorMessage).build());
+        }
+      })
+    );
   }
 
   /**
@@ -395,7 +388,7 @@ public class SettingMemberInfoModel extends Model {
    */
   public boolean isMarketingEnabled() {
     for (PolicyBean policyBean : settingMemberBean.getInfoAgreeList()) {
-      if(PolicyBean.UID_MARKETING.equals(policyBean.getUid())) {
+      if (PolicyBean.UID_MARKETING.equals(policyBean.getUid())) {
         return policyBean.isChecked();
       }
     }