Sfoglia il codice sorgente

[이벤트][New] 응모형 좋아요 추가

hyodong.min 6 anni fa
parent
commit
35687f124e

+ 34 - 2
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/event/EventDetailModel.java

@@ -8,14 +8,17 @@ import java.util.List;
 import io.reactivex.disposables.Disposable;
 import kr.co.zumo.app.R;
 import kr.co.zumo.app.lifeplus.bean.api.APIData;
+import kr.co.zumo.app.lifeplus.bean.api.ContentsLikeRequestBean;
 import kr.co.zumo.app.lifeplus.bean.api.EventDetailBean;
 import kr.co.zumo.app.lifeplus.bean.api.EventDetailResultBean;
 import kr.co.zumo.app.lifeplus.bean.api.EventPageBean;
 import kr.co.zumo.app.lifeplus.bean.api.ItemNoRequestBean;
+import kr.co.zumo.app.lifeplus.bean.api.LifeplusAPIBean;
 import kr.co.zumo.app.lifeplus.model.CoinModel;
 import kr.co.zumo.app.lifeplus.model.module.APIError;
 import kr.co.zumo.app.lifeplus.model.module.APIEventDetailModule;
 import kr.co.zumo.app.lifeplus.model.module.APIModuleListener;
+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;
@@ -36,10 +39,10 @@ public abstract class EventDetailModel extends CoinModel {
   protected EventDetailBean eventDetailBean;
   protected EventDetailBean deliveredEventDetailBean;
   protected Disposable disposable;
+  private Disposable disposableLiked;
 
   @Override
   protected void createViewInternal() {
-
   }
 
   @CallSuper
@@ -49,11 +52,14 @@ public abstract class EventDetailModel extends CoinModel {
       disposable.dispose();
       disposable = null;
     }
+    if (null != disposableLiked) {
+      disposableLiked.dispose();
+      disposableLiked = null;
+    }
   }
 
   @Override
   protected void destroyViewInternal() {
-
   }
 
   @Override
@@ -89,6 +95,7 @@ public abstract class EventDetailModel extends CoinModel {
 
   public void setDeliveredEventDetailBean(EventDetailBean eventDetailBean) {
     this.deliveredEventDetailBean = eventDetailBean;
+    this.deliveredEventDetailBean.updateLike(ContentsFlagHelper.getInstance());
   }
 
   protected List<EventPageBean> eventPageBeans;
@@ -115,6 +122,7 @@ public abstract class EventDetailModel extends CoinModel {
       public void onApiSuccess(EventDetailResultBean resultBean) {
         if (null != resultBean && null != resultBean.getData()) {
           eventDetailBean = resultBean.getData();
+          eventDetailBean.updateLike(ContentsFlagHelper.getInstance());
 
           parseEventPageBean();
 
@@ -186,4 +194,28 @@ public abstract class EventDetailModel extends CoinModel {
     return getEventDetailBean().isSimpleQuestion();
   }
 
+  protected void updateItemLiked(boolean isChecked) {
+    eventDetailBean.setLiked(isChecked);
+  }
+
+  public void updateLiked() {
+    EventDetailBean bean = eventDetailBean;
+    boolean toChecked = !bean.isLiked();
+    disposableLiked = ContentsFlagHelper.getInstance().updateLiked(new ContentsLikeRequestBean(getUserName(), bean.getItemNo(), APIData.valueOf(toChecked)), new APIModuleListener<LifeplusAPIBean>() {
+      @Override
+      public void onApiSuccess(LifeplusAPIBean resultBean) {
+        updateItemLiked(toChecked);
+        onResult(new Event.Builder(Event.SUCCESS).integer(Event.CONTENTS_LIKE).bool(toChecked).build());
+      }
+
+      @Override
+      public void onApiError(String errorMessage, APIError error) {
+        onResult(new Event.Builder(Event.ERROR).integer(Event.CONTENTS_LIKE).bool(toChecked).string(errorMessage).build());
+      }
+    });
+  }
+
+  public boolean isItemLiked() {
+    return eventDetailBean.isLiked();
+  }
 }

+ 2 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/event/IEventDetailView.java

@@ -19,4 +19,6 @@ public interface IEventDetailView extends IView {
   void setPageNumber(String pageNumber);
 
   void hidePageNumberArea();
+
+  void setLiked(boolean isChecked , boolean isAnim);;
 }

+ 5 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/event/entry/EventDetailEntryFragment.java

@@ -121,4 +121,9 @@ public class EventDetailEntryFragment extends EventDetailBaseFragment<EventDetai
       }
     }
   }
+
+  @Override
+  public void setLiked(boolean isChecked, boolean isAnim) {
+    actionBarHelper.setLiked(isChecked, isAnim);
+  }
 }

+ 7 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/event/entry/EventDetailEntryPresenter.java

@@ -47,6 +47,7 @@ public class EventDetailEntryPresenter extends Presenter<EventDetailEntryModel,
 
   private void render() {
     view.draw(model.getEventPageList());
+    view.setLiked(model.isItemLiked(), false);
   }
 
   @Override
@@ -167,6 +168,9 @@ public class EventDetailEntryPresenter extends Presenter<EventDetailEntryModel,
         if (event.getInteger() == Event.EVENT_DETAIL) {
           doubleChecker.checkSecond();
         }
+        else if (event.getInteger() == Event.CONTENTS_LIKE) {
+          view.setLiked(event.getBool(), true);
+        }
         break;
       case Event.ERROR:
         if (event.getInteger() == Event.EVENT_DETAIL) {
@@ -183,6 +187,7 @@ public class EventDetailEntryPresenter extends Presenter<EventDetailEntryModel,
 
   @Override
   public void onNavigationClickLike(NavigationBar navigationBar) {
+    model.updateLiked();
   }
 
   @Override
@@ -199,6 +204,8 @@ public class EventDetailEntryPresenter extends Presenter<EventDetailEntryModel,
     else {
       view.setPageNumber("");
     }
+
+    view.setLiked(model.isItemLiked(), false);
   }
 
   @Override

+ 5 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/event/select/EventDetailSelectFragment.java

@@ -106,6 +106,11 @@ public class EventDetailSelectFragment extends EventDetailBaseFragment<EventDeta
     textViewPageNumber.setVisibility(View.GONE);
   }
 
+  @Override
+  public void setLiked(boolean isChecked, boolean isAnim) {
+    actionBarHelper.setLiked(isChecked, isAnim);
+  }
+
   /**
    * ACTION_MOVE를 제외한 나머지 이벤트는 true  리턴하여
    * 스크롤만 막게 구현함