Przeglądaj źródła

[컨텐츠][New] BookmarkModelHelper 와 연동

hyodong.min 7 lat temu
rodzic
commit
d6f124a027

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

@@ -19,6 +19,17 @@ public class BookmarkBean extends LifeplusContentsBean {
   @SerializedName("cstBmkNo")
   private String bookmarkNumber;
 
+  public BookmarkBean(LifeplusContentsBean contentsBean) {
+    setItemNumber(contentsBean.getItemNumber());
+    setTitle(contentsBean.getTitle());
+    setSubTitle(contentsBean.getSubTitle());
+    setImageName(contentsBean.getImageName());
+    setImageUrl(contentsBean.getImageUrl());
+    setContentsUrl(contentsBean.getContentsUrl());
+    setLiked(contentsBean.isLiked());
+    setBookmarked(contentsBean.isBookmarked());
+  }
+
   public String getBookmarkNumber() {
     return bookmarkNumber;
   }
@@ -26,4 +37,6 @@ public class BookmarkBean extends LifeplusContentsBean {
   public void setBookmarkNumber(String bookmarkNumber) {
     this.bookmarkNumber = bookmarkNumber;
   }
+
+
 }

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

@@ -4,6 +4,7 @@
 package kr.co.zumo.app.lifeplus.view.screen.contents;
 
 import io.reactivex.disposables.Disposable;
+import kr.co.zumo.app.lifeplus.bean.api.BookmarkBean;
 import kr.co.zumo.app.lifeplus.bean.api.ContentsFlagRequestBean;
 import kr.co.zumo.app.lifeplus.bean.api.LifeplusAPIBean;
 import kr.co.zumo.app.lifeplus.bean.api.LifeplusContentsBean;
@@ -12,6 +13,7 @@ import kr.co.zumo.app.lifeplus.model.Model;
 import kr.co.zumo.app.lifeplus.model.SuperModel;
 import kr.co.zumo.app.lifeplus.model.module.IAPIModuleListener;
 import kr.co.zumo.app.lifeplus.view.Event;
+import kr.co.zumo.app.lifeplus.view.screen.my.bookmark.BookmarkModelHelper;
 
 /**
  * ContentsModel
@@ -138,6 +140,13 @@ public class ContentsModel extends Model {
       @Override
       public void onApiSuccess(LifeplusAPIBean resultBean) {
         contentsBean.setBookmarked(toChecked);
+        if (toChecked) {
+          BookmarkModelHelper.getInstance().addBookmark(new BookmarkBean(contentsBean));
+        }
+        else {
+          BookmarkModelHelper.getInstance().removeBookmark(contentsBean.getItemNumber());
+        }
+
         onResult(new Event.Builder(Event.SUCCESS).integer(Event.CONTENTS_BOOKMARK).bool(toChecked).build());
       }
 

+ 4 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/contents/ContentsPresenter.java

@@ -141,6 +141,10 @@ public class ContentsPresenter extends Presenter<ContentsModel, IContentsView> {
 
   @Override
   public void onScreenReady() {
+    if (null == model.getContentsBean()) {
+      return;
+    }
+
     view.render(model.getContentsBean().getContentsUrl());
 
     /**

+ 41 - 14
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/my/bookmark/BookmarkModelHelper.java

@@ -66,6 +66,46 @@ public class BookmarkModelHelper {
     }
   }
 
+  /**
+   * bookmark 를 추가한다.
+   * - 마이 페이지가 아닌 컨텐츠 페이지에서 추가한다.
+   * - commit 없이 리스트에 직접 추가한다.
+   *
+   * @param bookmarkBean
+   */
+  public void addBookmark(BookmarkBean bookmarkBean) {
+    if (null == bookmarkBeans) {
+      bookmarkBeans = new ArrayList<>();
+    }
+    bookmarkBeans.add(0, bookmarkBean);
+
+    Log.i("APP# BookmarkModelHelper | addBookmark", "| size: " + bookmarkBeans.size() + ", bean: \n" + bookmarkBean.toPrettyJson());
+  }
+
+  /**
+   * bookmark 를 제거한다.
+   * - 마이 페이지가 아닌 컨텐츠 페이지에서 제거한다.
+   * - commit 없이 리스트에 직접 제거한다.
+   *
+   * @param itemNumber
+   */
+  public void removeBookmark(String itemNumber) {
+    if (null == bookmarkBeans) {
+      bookmarkBeans = new ArrayList<>();
+    }
+    int len = bookmarkBeans.size();
+    Log.i("APP# BookmarkModelHelper | removeBookmark", "|" + "bookmarkBeans.size => " + bookmarkBeans.size());
+    for (int k = 0; k < len; ++k) {
+      BookmarkBean bean = bookmarkBeans.get(k);
+      if (bean.getItemNumber().equals(itemNumber)) {
+        bookmarkBeans.remove(k);
+        Log.i("APP# BookmarkModelHelper | removeBookmark", "|---> size: " + bookmarkBeans.size() + "removed: \n" + bean.toJson());
+        break;
+      }
+    }
+    Log.i("APP# BookmarkModelHelper | removeBookmark", "|" + "bookmarkBeans.size => " + bookmarkBeans.size());
+  }
+
   /**
    * bookmark 복원
    * - commit()을 해야 실제 데이터에 적용된다.
@@ -108,26 +148,13 @@ public class BookmarkModelHelper {
     if (null == itemNumberForRemoveList) {
       itemNumberForRemoveList = new ArrayList<>();
     }
-    if (null == bookmarkBeans) {
-      bookmarkBeans = new ArrayList<>();
-    }
 
     int itemLen = itemNumberForRemoveList.size();
-    Log.i("APP# BookmarkModelHelper | commit", "|" + "bookmarkBeans.size => " + bookmarkBeans.size());
     for (int i = 0; i < itemLen; ++i) {
       String itemNumber = itemNumberForRemoveList.get(i);
-      int len = bookmarkBeans.size();
-      for (int k = 0; k < len; ++k) {
-        BookmarkBean bean = bookmarkBeans.get(k);
-        if (bean.getItemNumber().equals(itemNumber)) {
-          Log.i("APP# BookmarkModelHelper | commit", "|--->" + "removed: \n" + bean.toJson());
-          bookmarkBeans.remove(k);
-          break;
-        }
-      }
+      removeBookmark(itemNumber);
     }
     itemNumberForRemoveList = null;
-    Log.i("APP# BookmarkModelHelper | commit", "|" + "bookmarkBeans.size => " + bookmarkBeans.size());
   }
 
   /**

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

@@ -246,7 +246,6 @@ public class MyMainPresenter extends Presenter<MyMainModel, IMyMainView> {
   @Override
   public void onScreenReady() {
     doubleCheckerBookmarkList.checkFirst();
-    doubleCheckerDefaultBookmarkList.checkFirst();
     doubleCheckerBestBucket.checkFirst();
     doubleCheckerMyBucket.checkFirst();
   }
@@ -258,7 +257,11 @@ public class MyMainPresenter extends Presenter<MyMainModel, IMyMainView> {
 
   private void setBookmark() {
     if (model.getMyBookmarkSize() == 0) {
-      model.loadDefaultBookmarkList();
+      doubleCheckerDefaultBookmarkList.checkFirst();
+      // 처음 실행 시에만 데이터 로드, 두 번째 부터는 로드할 필요 없음.
+      if (doubleCheckerDefaultBookmarkList.isCompleted() == false) {
+        model.loadDefaultBookmarkList();
+      }
     }
     else {
       setMyBookmarkList();
@@ -266,10 +269,12 @@ public class MyMainPresenter extends Presenter<MyMainModel, IMyMainView> {
   }
 
   private void setDefaultBookmarkList() {
+    Log.e("APP#  MyMainPresenter | setDefaultBookmarkList", "|" + model.getDefaultBookmarkList());
     view.setDefaultBookmarkList(model.getDefaultBookmarkList());
   }
 
   private void setMyBookmarkList() {
+    Log.e("APP#  MyMainPresenter | setMyBookmarkList", "|" + model.getMyBookmarkList());
     view.setMyBookmarkList(model.getMyBookmarkList());
     int len = model.getMyBookmarkSize();