Ver código fonte

[메뉴][New] 북마크/버킷리스트 확인하여 다음 스크린 선택

hyodong.min 6 anos atrás
pai
commit
918aa2a3ca

+ 28 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/model/Model.java

@@ -14,8 +14,10 @@ import io.reactivex.disposables.Disposable;
 import io.reactivex.schedulers.Schedulers;
 import kr.co.zumo.app.lifeplus.ILifeCycle;
 import kr.co.zumo.app.lifeplus.application.App;
+import kr.co.zumo.app.lifeplus.bean.api.BookmarkListResultBean;
 import kr.co.zumo.app.lifeplus.bean.api.BucketListRequestBean;
 import kr.co.zumo.app.lifeplus.bean.api.BucketListResultBean;
+import kr.co.zumo.app.lifeplus.bean.api.PageRequestBean;
 import kr.co.zumo.app.lifeplus.helper.DeliveryHelper;
 import kr.co.zumo.app.lifeplus.helper.DeliveryResultHelper;
 import kr.co.zumo.app.lifeplus.helper.Helper;
@@ -30,6 +32,7 @@ import kr.co.zumo.app.lifeplus.util.StringUtil;
 import kr.co.zumo.app.lifeplus.view.Event;
 import kr.co.zumo.app.lifeplus.view.IEventListener;
 import kr.co.zumo.app.lifeplus.view.IWaiterCallable;
+import kr.co.zumo.app.lifeplus.view.screen.my.bookmark.BookmarkManager;
 import kr.co.zumo.app.lifeplus.view.screen.my.bucketlist.BucketListManager;
 
 /**
@@ -52,6 +55,7 @@ public abstract class Model extends ViewModel implements ILifeCycle, IHelperProv
   private INetworkReceiverListener networkListener;
   protected IWaiterCallable waiterCaller;
   private Disposable disposableBucket;
+  private Disposable disposableBookMarkList;
   private int screenId;
   private int prevScreenId;
 
@@ -325,6 +329,26 @@ public abstract class Model extends ViewModel implements ILifeCycle, IHelperProv
       });
   }
 
+  /**
+   * 북마크 수를 파악
+   *
+   * @param listener
+   */
+  public void loadMyBookMarkCount(IEventListener listener) {
+    disposableBookMarkList = BookmarkManager.getInstance().loadMyBookmark(new PageRequestBean(), new APIModuleListener<BookmarkListResultBean>(waiterCaller) {
+      @Override
+      public void onApiSuccess(BookmarkListResultBean resultBean) {
+
+        listener.onEvent(new Event.Builder(Event.RESULT).integer(BookmarkManager.getInstance().getCountOfBookmark()).build());
+      }
+
+      @Override
+      public void onApiError(String errorMessage, APIError error) {
+        listener.onEvent(new Event.Builder(Event.RESULT).integer(0).build());
+      }
+    });
+  }
+
   /**
    * 현 Screen ID 저장
    *
@@ -398,6 +422,10 @@ public abstract class Model extends ViewModel implements ILifeCycle, IHelperProv
       disposableBucket.dispose();
       disposableBucket = null;
     }
+    if (null != disposableBookMarkList) {
+      disposableBookMarkList.dispose();
+      disposableBookMarkList = null;
+    }
 
     stopInternal();
   }

+ 27 - 7
app/src/main/java/kr/co/zumo/app/lifeplus/view/presenter/Presenter.java

@@ -221,23 +221,43 @@ public abstract class Presenter<M extends Model, V extends IView> implements ILi
       case Event.FIFTH_CATEGORY:
         goViaMenu(ScreenID.FIFTH_CATEGORY);
         break;
-      // TODO: 북마크, 버킷리스트 화면 변경으로 model에서 미리 카운트 로드 한후 분기하여 스크린 이동해야됨
       case Event.BUCKET:
         if (SuperModel.getInstance().isJoined()) {
-          model.setDeliveryPackaging(getBucketDeliveryBean(ScreenID.MY_BUCKET_LIST, null, null));
-          go(ScreenID.BUCKET_ACTIVITY);
+          model.loadMyBucketCount(evt -> {
+            BucketDeliveryBean bucketDeliveryBean = new BucketDeliveryBean();
+            if (evt.getInteger() == 0) {
+              bucketDeliveryBean.setScreenId(ScreenID.BUCKET_BEST);
+            }
+            else {
+              bucketDeliveryBean.setScreenId(ScreenID.MY_BUCKET_LIST);
+            }
+
+            if (bucketDeliveryBean.getScreenId() == model.getScreenId()) {
+              closeMenu();
+            }
+            else {
+              model.setDeliveryPackaging(bucketDeliveryBean);
+              go(ScreenID.BUCKET_ACTIVITY);
+            }
+          });
         }
         else {
-          model.setDeliveryPackaging(getBucketDeliveryBean(ScreenID.BUCKET_BEST, null, null));
-          goViaMenu(ScreenID.BUCKET_ACTIVITY);
+          showPopupForGuest();
         }
         break;
       case Event.BOOKMARK:
         if (SuperModel.getInstance().isJoined()) {
-          goViaMenu(ScreenID.BOOK_MARK_LIST);
+          model.loadMyBookMarkCount(evt -> {
+            if (evt.getInteger() == 0) {
+              goViaMenu(ScreenID.BOOK_MARK_DEFAULT);
+            }
+            else {
+              goViaMenu(ScreenID.BOOK_MARK_LIST);
+            }
+          });
         }
         else {
-          goViaMenu(ScreenID.BOOK_MARK_DEFAULT);
+          showPopupForGuest();
         }
         break;
       case Event.EVENT:

+ 2 - 34
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/my/bucketlist/BucketListDefaultDetailPresenter.java

@@ -7,13 +7,10 @@ import kr.co.zumo.app.lifeplus.supervisor.ScreenID;
 import kr.co.zumo.app.lifeplus.util.ResourceUtil;
 import kr.co.zumo.app.lifeplus.util.StringUtil;
 import kr.co.zumo.app.lifeplus.view.Event;
-import kr.co.zumo.app.lifeplus.view.dialog.AlertDialog;
 import kr.co.zumo.app.lifeplus.view.dialog.ConfirmDialog;
 import kr.co.zumo.app.lifeplus.view.dialog.DialogBuilder;
 import kr.co.zumo.app.lifeplus.view.dialog.DialogID;
-import kr.co.zumo.app.lifeplus.view.dialog.IAttribute;
 import kr.co.zumo.app.lifeplus.view.dialog.ICustomConfirmListener;
-import kr.co.zumo.app.lifeplus.view.dialog.ICustomDialogListener;
 import kr.co.zumo.app.lifeplus.view.presenter.Presenter;
 
 /**
@@ -112,7 +109,8 @@ public class BucketListDefaultDetailPresenter extends Presenter<BucketListDefaul
         // 삭제 완료
        // showDeleteResultDialog();
         if (model.getBucketCount() == 0) {
-          jump(ScreenID.MY_MAIN);
+//          jump(ScreenID.MY_MAIN);
+          finish();
         }else{
           go(ScreenID.MY_BUCKET_LIST);
         }
@@ -163,34 +161,4 @@ public class BucketListDefaultDetailPresenter extends Presenter<BucketListDefaul
     model.setDeliveryPackaging(model.getBucketMyBeanForEditing());
     go(ScreenID.BUCKET_MY_EDIT);
   }
-
-  protected void showDeleteResultDialog() {
-    new DialogBuilder<AlertDialog, ICustomDialogListener>(getFragmentManager(), DialogID.ALERT)
-      .listener(new ICustomDialogListener<AlertDialog>() {
-        @Override
-        public void onDialogResult(AlertDialog dialog, Event event) {
-          if (event.getEventId() == Event.CONFIRM) {
-            dialog.dispose();
-            if (model.getBucketCount() == 0) {
-              jump(ScreenID.MY_MAIN);
-            }
-            else {
-              back();
-            }
-          }
-        }
-
-        @Override
-        public void onDialogCanceled(AlertDialog dialog) {
-          dialog.dispose();
-        }
-      })
-      .attribute(new IAttribute<AlertDialog>() {
-        @Override
-        public void onAttribute(AlertDialog dialog) {
-          dialog.setText(R.string.delete_message);
-        }
-      })
-      .show();
-  }
 }

+ 6 - 3
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/my/bucketlist/BucketListWithTagDetailPresenter.java

@@ -178,8 +178,10 @@ public class BucketListWithTagDetailPresenter extends Presenter<BucketListWithTa
         // 삭제 완료
         //showDeleteResultDialog();
         if (model.getBucketCount() == 0) {
-          jump(ScreenID.MY_MAIN);
-        }else{
+//          jump(ScreenID.MY_MAIN);
+          finish();
+        }
+        else {
           go(ScreenID.MY_BUCKET_LIST);
         }
         break;
@@ -262,7 +264,8 @@ public class BucketListWithTagDetailPresenter extends Presenter<BucketListWithTa
           if (event.getEventId() == Event.CONFIRM) {
             dialog.dispose();
             if (model.getBucketCount() == 0) {
-              jump(ScreenID.MY_MAIN);
+//              jump(ScreenID.MY_MAIN);
+              finish();
             }
             else {
               back();

+ 2 - 33
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/my/bucketlist/EditMyBucketListPresenter.java

@@ -8,13 +8,10 @@ import kr.co.zumo.app.lifeplus.helper.NavigationBar;
 import kr.co.zumo.app.lifeplus.supervisor.ScreenID;
 import kr.co.zumo.app.lifeplus.util.ResourceUtil;
 import kr.co.zumo.app.lifeplus.view.Event;
-import kr.co.zumo.app.lifeplus.view.dialog.AlertDialog;
 import kr.co.zumo.app.lifeplus.view.dialog.ConfirmDialog;
 import kr.co.zumo.app.lifeplus.view.dialog.DialogBuilder;
 import kr.co.zumo.app.lifeplus.view.dialog.DialogID;
-import kr.co.zumo.app.lifeplus.view.dialog.IAttribute;
 import kr.co.zumo.app.lifeplus.view.dialog.ICustomConfirmListener;
-import kr.co.zumo.app.lifeplus.view.dialog.ICustomDialogListener;
 
 
 /**
@@ -52,7 +49,8 @@ public class EditMyBucketListPresenter extends AddMyBucketListPresenter {
       case Event.DELETE:
         // 삭제 완료
         if (model.getBucketCount() == 0) {
-          jump(ScreenID.MY_MAIN);
+//          jump(ScreenID.MY_MAIN);
+          finish();
         }else{
           go(ScreenID.MY_BUCKET_LIST);
         }
@@ -144,33 +142,4 @@ public class EditMyBucketListPresenter extends AddMyBucketListPresenter {
     model.updateBucket();
   }
 
-  protected void showDeleteResultDialog() {
-    new DialogBuilder<AlertDialog, ICustomDialogListener>(getFragmentManager(), DialogID.ALERT)
-      .listener(new ICustomDialogListener<AlertDialog>() {
-        @Override
-        public void onDialogResult(AlertDialog dialog, Event event) {
-          if (event.getEventId() == Event.CONFIRM) {
-            dialog.dispose();
-            if (model.getBucketCount() == 0) {
-              jump(ScreenID.MY_MAIN);
-            }
-            else {
-              back();
-            }
-          }
-        }
-
-        @Override
-        public void onDialogCanceled(AlertDialog dialog) {
-          dialog.dispose();
-        }
-      })
-      .attribute(new IAttribute<AlertDialog>() {
-        @Override
-        public void onAttribute(AlertDialog dialog) {
-          dialog.setText(R.string.delete_message);
-        }
-      })
-      .show();
-  }
 }