Forráskód Böngészése

Merge branch 'develop' of https://github.com/swict/LifePlusAndroid into develop

Hasemi 7 éve
szülő
commit
7d36145311

+ 11 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/activity/ScreenStarter.java

@@ -21,6 +21,7 @@ import kr.co.zumo.app.lifeplus.model.module.APIMemberSelectModule;
 import kr.co.zumo.app.lifeplus.model.module.APIModuleSimpleListener;
 import kr.co.zumo.app.lifeplus.model.module.APIPopupLoadModule;
 import kr.co.zumo.app.lifeplus.supervisor.ActivityDeliveryHelper;
+import kr.co.zumo.app.lifeplus.supervisor.ContentsFlagHelper;
 import kr.co.zumo.app.lifeplus.util.ResourceUtil;
 import kr.co.zumo.app.lifeplus.util.StringUtil;
 import kr.co.zumo.app.lifeplus.view.Event;
@@ -101,10 +102,19 @@ public class ScreenStarter {
     }
     else {
       // 비회원;
-      gotoScreen(START_FROM_MAIN);
+      doGuestAction();
     }
   }
 
+  private void doGuestAction() {
+    // 로컬에서 좋아요 등 정보를 가져오기 위해서 로딩 실행
+    disposable = ContentsFlagHelper.getInstance().load().subscribe(r -> {
+      gotoScreen(START_FROM_MAIN);
+    }, e -> {
+      gotoScreen(START_FROM_MAIN);
+    });
+  }
+
   public void loadPopupInfo() {
     disposable = new APIPopupLoadModule().call(new RequestBean(), new APIModuleSimpleListener<PopupInfoResultBean>() {
       @Override

+ 1 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/bean/api/BookmarkBean.java

@@ -43,7 +43,7 @@ public class BookmarkBean extends LifeplusContentsBean {
 
   public BookmarkBean(ContentsItemBean contentsItemBean) {
     this((LifeplusContentsBean) contentsItemBean);
-    setListItemNo(contentsItemBean.getListItemNo());
+    setListItemNo(contentsItemBean.getListItemNo());  // ContentsItemBean 의 경우 listItemNo 를 설정 해준다.
   }
 
   /**

+ 61 - 2
app/src/main/java/kr/co/zumo/app/lifeplus/network/api/LifeplusAPIRepository.java

@@ -3,6 +3,9 @@
  */
 package kr.co.zumo.app.lifeplus.network.api;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import io.reactivex.Single;
 import kr.co.zumo.app.lifeplus.bean.api.AuthConfirmRequestBean;
 import kr.co.zumo.app.lifeplus.bean.api.AuthNumberRequestBean;
@@ -31,12 +34,15 @@ import kr.co.zumo.app.lifeplus.bean.api.CoinInfoRequestBean;
 import kr.co.zumo.app.lifeplus.bean.api.CoinInfoResultBean;
 import kr.co.zumo.app.lifeplus.bean.api.ContentsBookmarkRequestBean;
 import kr.co.zumo.app.lifeplus.bean.api.ContentsDetailResultBean;
+import kr.co.zumo.app.lifeplus.bean.api.ContentsFlagBean;
 import kr.co.zumo.app.lifeplus.bean.api.ContentsFlagResultBean;
 import kr.co.zumo.app.lifeplus.bean.api.ContentsLikeRequestBean;
 import kr.co.zumo.app.lifeplus.bean.api.FAQResultBean;
 import kr.co.zumo.app.lifeplus.bean.api.FilterDetailRequestBean;
+import kr.co.zumo.app.lifeplus.bean.api.ItemNumberBean;
 import kr.co.zumo.app.lifeplus.bean.api.KeywordRequestBean;
 import kr.co.zumo.app.lifeplus.bean.api.LifeplusAPIBean;
+import kr.co.zumo.app.lifeplus.bean.api.LifeplusData;
 import kr.co.zumo.app.lifeplus.bean.api.LoginResultBean;
 import kr.co.zumo.app.lifeplus.bean.api.MainContentsResultBean;
 import kr.co.zumo.app.lifeplus.bean.api.MemberAuthResultBean;
@@ -69,6 +75,8 @@ import kr.co.zumo.app.lifeplus.bean.api.TagRelatedContentsRequestBean;
 import kr.co.zumo.app.lifeplus.bean.api.TagRelatedContentsResultBean;
 import kr.co.zumo.app.lifeplus.bean.api.TitleRequestBean;
 import kr.co.zumo.app.lifeplus.bean.api.UserNameRequestBean;
+import kr.co.zumo.app.lifeplus.model.SuperModel;
+import kr.co.zumo.app.lifeplus.supervisor.GuestLikedManager;
 
 /**
  * LifeplusAPIRepository
@@ -317,7 +325,30 @@ public class LifeplusAPIRepository implements LifeplusAPI {
 
   @Override
   public Single<LifeplusAPIBean> setLiked(ContentsLikeRequestBean bean) {
-    return new LifeplusAPIService().setLiked(bean);
+    /**
+     * 회원 / 비회원 구분 처리
+     */
+    if (SuperModel.getInstance().isJoined()) {
+      // 회원 - 서버에 저장
+      return new LifeplusAPIService().setLiked(bean);
+    }
+    else {
+      // 비회원 - 로컬에 저장
+      boolean toChecked = LifeplusData.isTrue(bean.getChecked());
+
+      GuestLikedManager guestLikedManager = new GuestLikedManager();
+      guestLikedManager.setGuestLikedListBean(SuperModel.getInstance().getGuestLikedListBean());
+
+      if (toChecked) {
+        guestLikedManager.addLiked(bean.getItemNo());
+      }
+      else {
+        guestLikedManager.removeLiked(bean.getItemNo());
+      }
+      SuperModel.getInstance().setGuestLikedListBean(guestLikedManager.getGuestLikedListBean());
+
+      return Single.fromCallable(() -> new LifeplusAPIBean(LifeplusAPIBean.RETURN_SUCCESS, ""));
+    }
   }
 
   @Override
@@ -327,7 +358,35 @@ public class LifeplusAPIRepository implements LifeplusAPI {
 
   @Override
   public Single<ContentsFlagResultBean> getContentsFlagList(RequestBean bean) {
-    return new LifeplusAPIService().getContentsFlagList(bean);
+    /**
+     * 회원 / 비회원 구분 처리
+     */
+    if (SuperModel.getInstance().isJoined()) {
+      // 회원 - 서버에서 로딩
+      return new LifeplusAPIService().getContentsFlagList(bean);
+    }
+    else {
+      return Single.fromCallable(() -> {
+
+        // 비회원 - 로컬에서 로딩
+
+        GuestLikedManager guestLikedManager = new GuestLikedManager();
+        guestLikedManager.setGuestLikedListBean(SuperModel.getInstance().getGuestLikedListBean());
+
+        ContentsFlagResultBean contentsFlagResultBean = new ContentsFlagResultBean();
+        contentsFlagResultBean.setCode(LifeplusAPIBean.RETURN_SUCCESS);
+        ContentsFlagBean contentsFlagBean = new ContentsFlagBean();
+        contentsFlagBean.setBookmarkedList(new ArrayList<>());
+        List<ItemNumberBean> list = new ArrayList<>();
+        for (String s : guestLikedManager.getLikedList()) {
+          list.add(new ItemNumberBean(s));
+        }
+        contentsFlagBean.setLikedList(list);
+        contentsFlagResultBean.setData(contentsFlagBean);
+
+        return contentsFlagResultBean;
+      });
+    }
   }
 
   @Override

+ 8 - 9
app/src/main/java/kr/co/zumo/app/lifeplus/supervisor/ContentsFlagHelper.java

@@ -81,9 +81,15 @@ public class ContentsFlagHelper implements IFlags {
       single = new LifeplusAPIRepository().getContentsFlagList(new ParameterMapper<>().map(new BasicParamProvider(), new RequestBean()))
         .subscribeOn(Schedulers.io())
         .observeOn(AndroidSchedulers.mainThread())
+        .doOnError(throwable -> {
+          Log.e("APP#  ContentsFlagHelper | load", "|" + " error ---> default init.");
+          contentsFlagBean = new ContentsFlagBean();
+          contentsFlagBean.setLikedList(new ArrayList<>());
+          contentsFlagBean.setBookmarkedList(new ArrayList<>());
+        })
         .doOnEvent((resultBean, throwable) -> {
           if (null != resultBean) {
-            Log.w("APP# ContentsFlagHelper | load", "| loaded: " + resultBean.toJson());
+            Log.i("APP# ContentsFlagHelper | load", "| loaded: " + resultBean.toJson());
             if (resultBean.isSuccess()) {
               contentsFlagBean = resultBean.getData();
 
@@ -96,6 +102,7 @@ public class ContentsFlagHelper implements IFlags {
                 }
               }
             }
+            Log.w("APP# ContentsFlagHelper | load", "| loaded mapped-> " + resultBean.toJson());
           }
           else {
             Log.w("APP# ContentsFlagHelper | load", "| loaded is null!!");
@@ -142,10 +149,6 @@ public class ContentsFlagHelper implements IFlags {
       return false;
     }
     List<ItemNumberBean> list = contentsFlagBean.getLikedList();
-    return isChecked(itemNo, list);
-  }
-
-  private boolean isChecked(String itemNo, List<ItemNumberBean> list) {
     if (null != list) {
       for (ItemNumberBean bean : list) {
         if (null != bean) {
@@ -170,10 +173,6 @@ public class ContentsFlagHelper implements IFlags {
       return false;
     }
     List<ListItemNumberBean> list = contentsFlagBean.getBookmarkedList();
-    return isChecked(itemNo, listItemNo, list);
-  }
-
-  private boolean isChecked(String itemNo, String listItemNo, List<ListItemNumberBean> list) {
     if (null != list) {
       for (ListItemNumberBean bean : list) {
         if (null != bean) {

+ 5 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/supervisor/GuestLikedManager.java

@@ -3,6 +3,7 @@
  */
 package kr.co.zumo.app.lifeplus.supervisor;
 
+import java.util.ArrayList;
 import java.util.List;
 
 import kr.co.zumo.app.lifeplus.bean.GuestLikedListBean;
@@ -29,6 +30,10 @@ public class GuestLikedManager implements IFlags {
   }
 
   public void setGuestLikedListBean(GuestLikedListBean guestLikedListBean) {
+    if(null == guestLikedListBean) {
+      guestLikedListBean = new GuestLikedListBean();
+      guestLikedListBean.setLikedList(new ArrayList<>());
+    }
     this.guestLikedListBean = guestLikedListBean;
   }
 

+ 3 - 82
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/contents/ContentsBaseModel.java

@@ -6,10 +6,7 @@ package kr.co.zumo.app.lifeplus.view.screen.contents;
 import android.support.annotation.CallSuper;
 import android.util.Log;
 
-import java.util.List;
-
 import io.reactivex.disposables.Disposable;
-import kr.co.zumo.app.lifeplus.bean.GuestLikedListBean;
 import kr.co.zumo.app.lifeplus.bean.api.BookmarkBean;
 import kr.co.zumo.app.lifeplus.bean.api.ContentsBookmarkRequestBean;
 import kr.co.zumo.app.lifeplus.bean.api.ContentsItemBean;
@@ -18,11 +15,9 @@ 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.model.Model;
-import kr.co.zumo.app.lifeplus.model.SuperModel;
 import kr.co.zumo.app.lifeplus.model.module.APIError;
 import kr.co.zumo.app.lifeplus.model.module.APIModuleSimpleListener;
 import kr.co.zumo.app.lifeplus.supervisor.ContentsFlagHelper;
-import kr.co.zumo.app.lifeplus.supervisor.GuestLikedManager;
 import kr.co.zumo.app.lifeplus.util.StringUtil;
 import kr.co.zumo.app.lifeplus.view.Event;
 import kr.co.zumo.app.lifeplus.view.screen.my.bookmark.BookmarkModelHelper;
@@ -44,15 +39,9 @@ public abstract class ContentsBaseModel extends Model {
 
   protected LifeplusContentsBean contentsBean;
 
-  protected GuestLikedManager guestLikedManager;
-
   protected int currentPageIndex = 0;
   protected String listItemNo = "";
 
-  public ContentsBaseModel() {
-    guestLikedManager = new GuestLikedManager();
-  }
-
   @Override
   protected final void createViewInternal() {
   }
@@ -62,7 +51,6 @@ public abstract class ContentsBaseModel extends Model {
   protected final void destroyInternal() {
     stopLoading();
     contentsBean = null;
-    saveGuestLikedList();
     destroyViewInternalModel();
   }
 
@@ -152,14 +140,8 @@ public abstract class ContentsBaseModel extends Model {
     Log.i("APP# ContentsBaseModel | setContentsBean", "|" + " pageIndex: " + pageIndex + ", listItemNo: " + listItemNo);
 
     // 컨텐츠에 좋아요/북마크 설정
-    if (isMember()) {
-      contentsBean.updateLike(ContentsFlagHelper.getInstance());
-      contentsBean.updateBookmark(ContentsFlagHelper.getInstance());
-    }
-    else {
-      defineGuestLikeBean();
-      contentsBean.updateLike(guestLikedManager);
-    }
+    contentsBean.updateLike(ContentsFlagHelper.getInstance());
+    contentsBean.updateBookmark(ContentsFlagHelper.getInstance());
   }
 
   /**
@@ -205,53 +187,6 @@ public abstract class ContentsBaseModel extends Model {
     getCurrentItem().setBookmarked(isChecked);
   }
 
-  /**
-   * 비회원의 경우 좋아요 정보를 로컬에 저장해둔다.
-   * - 가입 시 서버로 전송
-   */
-  protected void updateGuestLiked(ContentsItemBean bean) {
-    defineGuestLikeBean();
-
-    // toggle
-    boolean toChecked = !bean.isLiked();
-    bean.setLiked(toChecked);
-    if (toChecked) {
-      guestLikedManager.addLiked(bean.getListItemNo());
-    }
-    else {
-      guestLikedManager.removeLiked(bean.getListItemNo());
-    }
-
-    // for prev screen
-    ContentsFlagHelper.getInstance().setChanged();
-
-    // for UI
-    onResult(new Event.Builder(Event.SUCCESS).integer(Event.CONTENTS_LIKE).bool(toChecked).build());
-  }
-
-  protected void defineGuestLikeBean() {
-    List<String> list = guestLikedManager.getLikedList();
-    if (null == list) {
-      GuestLikedListBean bean = getGuestLikedList();
-      if (null != bean) {
-        Log.e("APP#  ContentsBaseModel | defineGuestLikeBean", "|" + bean.toPrettyJson());
-      }
-      else {
-        // bean 이 null 이면 저장된 값이 없는 경우;
-        bean = new GuestLikedListBean();
-      }
-      guestLikedManager.setGuestLikedListBean(bean);
-    }
-  }
-
-  private GuestLikedListBean getGuestLikedList() {
-    return SuperModel.getInstance().getGuestLikedListBean();
-  }
-
-  private void saveGuestLikedList() {
-    SuperModel.getInstance().setGuestLikedListBean(guestLikedManager.getGuestLikedListBean());
-  }
-
   public final void stopLoading() {
     if (null != disposableLiked) {
       disposableLiked.dispose();
@@ -266,10 +201,9 @@ public abstract class ContentsBaseModel extends Model {
   }
 
   protected void stopLoadingInternal() {
-
   }
 
-  private void updateLikedInternal() {
+  public void updateLiked() {
     ContentsItemBean bean = getCurrentItem();
     boolean toChecked = !bean.isLiked();
     disposableLiked = ContentsFlagHelper.getInstance().updateLiked(new ContentsLikeRequestBean(getUserName(), bean.getListItemNo(), LifeplusData.valueOf(toChecked)), new APIModuleSimpleListener<LifeplusAPIBean>() {
@@ -284,19 +218,6 @@ public abstract class ContentsBaseModel extends Model {
         onResult(new Event.Builder(Event.ERROR).integer(Event.CONTENTS_LIKE).bool(toChecked).string(errorMessage).build());
       }
     });
-
-  }
-
-  public void updateLiked() {
-
-    if (isMember()) {
-      // 회원 좋아요.
-      updateLikedInternal();
-    }
-    else {
-      // 비회원 좋아요
-      updateGuestLiked(getCurrentItem());
-    }
   }
 
   public void updateBookmarked() {

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

@@ -173,17 +173,9 @@ public class ContentsModel extends ContentsBaseModel {
         // 각 페이지(item) 별로 like/bookmark 설정
         List<ContentsItemBean> list = contentsDetailListBean.getItemDetailList();
         if (null != list) {
-          if (isMember()) {
-            for (ContentsItemBean itemBean : list) {
-              itemBean.updateLike(ContentsFlagHelper.getInstance());
-              itemBean.updateBookmark(ContentsFlagHelper.getInstance());
-            }
-          }
-          else {
-            defineGuestLikeBean();
-            for (ContentsItemBean itemBean : list) {
-              itemBean.updateLike(guestLikedManager);
-            }
+          for (ContentsItemBean itemBean : list) {
+            itemBean.updateLike(ContentsFlagHelper.getInstance());
+            itemBean.updateBookmark(ContentsFlagHelper.getInstance());
           }
         }
 
@@ -226,18 +218,6 @@ public class ContentsModel extends ContentsBaseModel {
   }
 
   public void updateSeriesLiked() {
-
-    if (isMember()) {
-      // 회원 좋아요.
-      updateSeriesLikedInternal();
-    }
-    else {
-      // 비회원 좋아요
-      updateGuestLiked(ContentsItemBean.toBean(selectedSeriesItemBean));
-    }
-  }
-
-  private void updateSeriesLikedInternal() {
     boolean toChecked = !selectedSeriesItemBean.isLiked();
     disposableSeriesLiked = ContentsFlagHelper.getInstance().updateLiked(new ContentsLikeRequestBean(getUserName(), selectedSeriesItemBean.getItemNo(), LifeplusData.valueOf(toChecked)), new APIModuleSimpleListener<LifeplusAPIBean>() {
       @Override
@@ -252,7 +232,6 @@ public class ContentsModel extends ContentsBaseModel {
 
       }
     });
-
   }
 
   public void updateSeriesBookmarked() {

+ 1 - 7
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/contents/series/ContentsSeriesModel.java

@@ -2,11 +2,9 @@ package kr.co.zumo.app.lifeplus.view.screen.contents.series;
 
 import java.util.List;
 
-import kr.co.zumo.app.lifeplus.bean.GuestLikedListBean;
-import kr.co.zumo.app.lifeplus.bean.api.ContentsItemBean;
 import kr.co.zumo.app.lifeplus.bean.api.ContentsDetailListBean;
+import kr.co.zumo.app.lifeplus.bean.api.ContentsItemBean;
 import kr.co.zumo.app.lifeplus.bean.api.SeriesItemBean;
-import kr.co.zumo.app.lifeplus.model.SuperModel;
 import kr.co.zumo.app.lifeplus.supervisor.ContentsFlagHelper;
 import kr.co.zumo.app.lifeplus.view.dialog.ShareDialog;
 import kr.co.zumo.app.lifeplus.view.screen.contents.ContentsBaseModel;
@@ -83,10 +81,6 @@ public class ContentsSeriesModel extends ContentsBaseModel {
     return contentsDetailListBean.getSeriesItemList();
   }
 
-  private GuestLikedListBean getGuestLikedList() {
-    return SuperModel.getInstance().getGuestLikedListBean();
-  }
-
   public void setSelectedIndex(int index) {
     contentsBean = getSeriesItemBeans().get(index);
   }