Browse Source

[마이][New] 메인 이름 표시하기 위해서 멤버 정보 불러옴

hyodong.min 7 years ago
parent
commit
c5bd4a2cdc

+ 2 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/activity/AppInitializer.java

@@ -8,6 +8,7 @@ import android.content.Context;
 import kr.co.zumo.app.lifeplus.model.SuperModel;
 import kr.co.zumo.app.lifeplus.model.SuperModelInit;
 import kr.co.zumo.app.lifeplus.supervisor.ContentsFlagHelper;
+import kr.co.zumo.app.lifeplus.view.screen.setting.MemberInfoModelHelper;
 
 /**
  * AppInitializer
@@ -37,7 +38,6 @@ public class AppInitializer {
 
   /**
    * 앱 종료 설정
-   *
    */
   public void dispose(Context context) {
 
@@ -46,5 +46,6 @@ public class AppInitializer {
 
     SuperModel.getInstance().dispose();
     ContentsFlagHelper.getInstance().dispose();
+    MemberInfoModelHelper.getInstance().dispose();
   }
 }

+ 21 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/supervisor/ContentsFlagHelper.java

@@ -124,6 +124,9 @@ public class ContentsFlagHelper implements IFlags {
    * @return
    */
   public boolean isLiked(String itemNumber) {
+    if (null == contentsFlagBean) {
+      return false;
+    }
     List<ItemNumberBean> list = contentsFlagBean.getLikedList();
     return isChecked(itemNumber, list);
   }
@@ -135,6 +138,9 @@ public class ContentsFlagHelper implements IFlags {
    * @return
    */
   public boolean isBookmarked(String itemNumber) {
+    if (null == contentsFlagBean) {
+      return false;
+    }
     List<ItemNumberBean> list = contentsFlagBean.getBookmarkedList();
     return isChecked(itemNumber, list);
   }
@@ -156,6 +162,9 @@ public class ContentsFlagHelper implements IFlags {
    * @param itemNumber
    */
   public void addLiked(String itemNumber) {
+    if (null == contentsFlagBean) {
+      return;
+    }
     List<ItemNumberBean> list = contentsFlagBean.getLikedList();
     if (null == list) {
       contentsFlagBean.setLikedList(new ArrayList<>());
@@ -173,6 +182,9 @@ public class ContentsFlagHelper implements IFlags {
    * @param itemNumber
    */
   public void addBookmarked(String itemNumber) {
+    if (null == contentsFlagBean) {
+      return;
+    }
     List<ItemNumberBean> list = contentsFlagBean.getBookmarkedList();
     if (null == list) {
       contentsFlagBean.setBookmarkedList(new ArrayList<>());
@@ -190,6 +202,9 @@ public class ContentsFlagHelper implements IFlags {
    * @param itemNumber
    */
   public void removeLiked(String itemNumber) {
+    if (null == contentsFlagBean) {
+      return;
+    }
     List<ItemNumberBean> list = contentsFlagBean.getLikedList();
     removeFlag(itemNumber, list);
   }
@@ -200,6 +215,9 @@ public class ContentsFlagHelper implements IFlags {
    * @param itemNumber
    */
   public void removeBookmarked(String itemNumber) {
+    if (null == contentsFlagBean) {
+      return;
+    }
     List<ItemNumberBean> list = contentsFlagBean.getBookmarkedList();
     removeFlag(itemNumber, list);
   }
@@ -218,6 +236,9 @@ public class ContentsFlagHelper implements IFlags {
 
   private void print() {
     if (AppUtil.isDebug()) {
+      if (null == contentsFlagBean || null == contentsFlagBean.getBookmarkedList() || null == contentsFlagBean.getLikedList()) {
+        return;
+      }
       Log.w("APP# ContentsFlagHelper | print", "| size bookmark: " + contentsFlagBean.getBookmarkedList().size());
       Log.w("APP# ContentsFlagHelper | print", "| size liked: " + contentsFlagBean.getLikedList().size());
 //      Log.w("APP# ContentsFlagHelper | print", "| lists: \n" + contentsFlagBean.toJson());

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

@@ -16,6 +16,8 @@ import kr.co.zumo.app.lifeplus.bean.api.LifeplusAPIBean;
 import kr.co.zumo.app.lifeplus.bean.api.LifeplusContentsBean;
 import kr.co.zumo.app.lifeplus.bean.api.LifeplusData;
 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.APIBookmarkBestModule;
 import kr.co.zumo.app.lifeplus.model.module.APIBucketBestModule;
@@ -24,6 +26,7 @@ import kr.co.zumo.app.lifeplus.supervisor.ContentsFlagHelper;
 import kr.co.zumo.app.lifeplus.view.Event;
 import kr.co.zumo.app.lifeplus.view.screen.my.bookmark.BookmarkModelHelper;
 import kr.co.zumo.app.lifeplus.view.screen.my.bucketlist.BucketListModelHelper;
+import kr.co.zumo.app.lifeplus.view.screen.setting.MemberInfoModelHelper;
 
 /**
  * MyMainMemberModel
@@ -36,6 +39,7 @@ import kr.co.zumo.app.lifeplus.view.screen.my.bucketlist.BucketListModelHelper;
  * @since 2018-11-13
  */
 public class MyMainModel extends Model {
+  private Disposable disposableLoading;
   private Disposable disposableLiked;
   private Disposable disposableBookmarked;
 
@@ -293,6 +297,35 @@ public class MyMainModel extends Model {
     });
   }
 
+  /**
+   * 설정 기본 정보 로딩
+   */
+  public void loadMemberInfo() {
+    disposableLoading = MemberInfoModelHelper.getInstance().loadMemberInfo(new RequestBean(), new IAPIModuleListener<SettingMemberResultBean>() {
+      @Override
+      public void onApiSuccess(SettingMemberResultBean resultBean) {
+        SettingMemberBean settingMemberBean = resultBean.getData();
+
+        if (null == settingMemberBean) {
+          onResult(new Event.Builder(Event.ERROR).integer(Event.SETTING_LOAD).build());
+        }
+        else {
+          onResult(new Event.Builder(Event.SUCCESS).integer(Event.SETTING_LOAD).build());
+        }
+      }
+
+      @Override
+      public void onApiReason(SettingMemberResultBean resultBean) {
+        onResult(new Event.Builder(Event.ERROR).integer(Event.SETTING_LOAD).string(resultBean.getReturnMessage()).build());
+      }
+
+      @Override
+      public void onApiError(String errorMessage) {
+        onResult(new Event.Builder(Event.ERROR).integer(Event.SETTING_LOAD).string(errorMessage).build());
+      }
+    });
+  }
+
   public boolean hasFlagChanged() {
     return ContentsFlagHelper.getInstance().hasChanged(hasCode);
   }

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

@@ -32,6 +32,7 @@ import kr.co.zumo.app.lifeplus.view.presenter.Presenter;
  */
 public class MyMainPresenter extends Presenter<MyMainModel, IMyMainView> {
 
+  private DoubleChecker doubleCheckerMemberInfo;
   private DoubleChecker doubleCheckerBookmarkList;
   private DoubleChecker doubleCheckerDefaultBookmarkList;
   private DoubleChecker doubleCheckerBestBucket;
@@ -41,12 +42,21 @@ public class MyMainPresenter extends Presenter<MyMainModel, IMyMainView> {
   public MyMainPresenter(MyMainModel model, IMyMainView view) {
     super(model, view);
 
+    doubleCheckerMemberInfo = new DoubleChecker(this::onMemberInfoLoaded);
     doubleCheckerBookmarkList = new DoubleChecker(this::setBookmark);
     doubleCheckerDefaultBookmarkList = new DoubleChecker(this::setDefaultBookmarkList);
     doubleCheckerBestBucket = new DoubleChecker(this::drawBestBucket);
     doubleCheckerMyBucket = new DoubleChecker(this::drawBucketLabel);
   }
 
+  private void onMemberInfoLoaded() {
+    model.loadMyBookMarkList();
+    model.loadBestBucket();
+    model.loadMyBucket();
+
+    setBenefitLabel();
+  }
+
   @Override
   protected void createViewInternal() {
   }
@@ -74,10 +84,7 @@ public class MyMainPresenter extends Presenter<MyMainModel, IMyMainView> {
 
   @Override
   protected void startInternalOnce() {
-
-    model.loadMyBookMarkList();
-    model.loadBestBucket();
-    model.loadMyBucket();
+    model.loadMemberInfo();
   }
 
   @Override
@@ -227,7 +234,10 @@ public class MyMainPresenter extends Presenter<MyMainModel, IMyMainView> {
         doubleCheckerDefaultBookmarkList.checkSecond();
         break;
       case Event.SUCCESS:
-        if (integer == Event.CONTENTS_BOOKMARK) {
+        if (integer == Event.SETTING_LOAD) {
+          doubleCheckerMemberInfo.checkSecond();
+        }
+        else if (integer == Event.CONTENTS_BOOKMARK) {
           // 북마크의 북마크(체크박스)
           view.setBookmarkContentsBookmarked(event.getIndex(), event.getBool());
           view.drawBookmarkLabel(model.getExpectedMyBookmarkSize());
@@ -265,10 +275,15 @@ public class MyMainPresenter extends Presenter<MyMainModel, IMyMainView> {
 
   @Override
   public void onScreenReady() {
+    doubleCheckerMemberInfo.checkFirst();
     doubleCheckerBookmarkList.checkFirst();
     doubleCheckerBestBucket.checkFirst();
     doubleCheckerMyBucket.checkFirst();
 
+    setBenefitLabel();
+  }
+
+  private void setBenefitLabel() {
     String name = model.getUserName();
     name = StringUtil.isFull(name) ? name + "님을" : "나를";
     view.setBenefitLabel(name);

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

@@ -3,6 +3,8 @@
  */
 package kr.co.zumo.app.lifeplus.view.screen.setting;
 
+import android.util.Log;
+
 import io.reactivex.disposables.Disposable;
 import kr.co.zumo.app.lifeplus.bean.api.RequestBean;
 import kr.co.zumo.app.lifeplus.bean.api.SettingMemberBean;
@@ -38,14 +40,16 @@ public class MemberInfoModelHelper {
   /**
    * 설정 기본 정보 로딩
    */
-  public Disposable loadSettingInfo(RequestBean requestBean, IAPIModuleListener<SettingMemberResultBean> listener) {
+  public Disposable loadMemberInfo(RequestBean requestBean, IAPIModuleListener<SettingMemberResultBean> listener) {
     if (null != settingMemberBean) {
+      Log.w("APP# MemberInfoModelHelper | loadMemberInfo", "|" + "return from cache........");
       SettingMemberResultBean resultBean = new SettingMemberResultBean();
       resultBean.setData(settingMemberBean);
       listener.onApiSuccess(resultBean);
 
     }
     else {
+      Log.w("APP# MemberInfoModelHelper | loadMemberInfo", "|" + "return fresh load........");
 
       stopLoading();
       disposableLoading = new APISettingMemberInfoLoadModule().call(requestBean, new IAPIModuleListener<SettingMemberResultBean>() {
@@ -88,4 +92,9 @@ public class MemberInfoModelHelper {
       disposableLoading = null;
     }
   }
+
+  public void dispose() {
+    stopLoading();
+    settingMemberBean = null;
+  }
 }

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

@@ -158,7 +158,7 @@ public class SettingModel extends Model {
    * 설정 기본 정보 로딩
    */
   public void loadSettingInfo() {
-    disposableLoading = MemberInfoModelHelper.getInstance().loadSettingInfo(new RequestBean(), new IAPIModuleListener<SettingMemberResultBean>() {
+    disposableLoading = MemberInfoModelHelper.getInstance().loadMemberInfo(new RequestBean(), new IAPIModuleListener<SettingMemberResultBean>() {
       @Override
       public void onApiSuccess(SettingMemberResultBean resultBean) {
         SettingModelHelper.getInstance().setSettingMemberBean(resultBean.getData());