Bläddra i källkod

[공통][Bug] Model에서 발생하는 Event.Error 은 중간 과정없이 Presenter 로 전달한다.
- 예외가 발생하면 Model 에서 catch 하여 FinalAlert 표시
- Event 를 처리하지 않으면 아무일도 일어나지 않는다.

hyodong.min 7 år sedan
förälder
incheckning
0306080681

+ 1 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/model/FAQModel.java

@@ -71,7 +71,7 @@ public class FAQModel extends Model {
           faqBeans = resultBean.getData();
           onResult(new Event.Builder(Event.RESULT).build());
         }, e -> {
-          onError(new Event.Builder(Event.ERROR).string(e.getLocalizedMessage()).build(), e);
+          onResult(new Event.Builder(Event.ERROR).string(e.getLocalizedMessage()).build());
         })
     );
   }

+ 2 - 3
app/src/main/java/kr/co/zumo/app/lifeplus/model/FinalAlert.java

@@ -26,9 +26,8 @@ final class FinalAlert {
    * - Dialog 등으로 처리하여 알림
    *
    * @param event
-   * @param throwable
    */
-  static void create(Event event, Throwable throwable) {
+  static void create(Event event) {
     try {
 //      AlertDialog.Builder builder = new AlertDialog.Builder(App.getInstance().getContext());
 //      builder.setMessage(null != throwable ? throwable.getLocalizedMessage() : event.getString());
@@ -36,7 +35,7 @@ final class FinalAlert {
 //      builder.setPositiveButton(android.R.string.ok, null);
 //      AlertDialog dialog = builder.create();
 //      dialog.show();
-      String message = null != throwable ? throwable.getLocalizedMessage() : event.getString();
+      String message = event.getString();
       Toast.makeText(App.getInstance().getContext(), message, Toast.LENGTH_LONG).show();
     } catch (Exception e) {
       e.printStackTrace();

+ 3 - 3
app/src/main/java/kr/co/zumo/app/lifeplus/model/MainModel.java

@@ -30,13 +30,13 @@ public class MainModel extends Model {
       .observeOn(AndroidSchedulers.mainThread())
       .subscribe(resultBean -> {
         if (resultBean.isSuccess()) {
-          onResult(new Event.Builder(Event.MEMBER_DELETE_COMPLETED).build());
+          onResult(new Event.Builder(Event.COMPLETED).integer(Event.MEMBER_DELETE).build());
         }
         else {
-          onResult(new Event.Builder(Event.MEMBER_DELETE_ERROR).string(resultBean.getReturnMessage()).build());
+          onResult(new Event.Builder(Event.ERROR).integer(Event.MEMBER_DELETE).string(resultBean.getReturnMessage()).build());
         }
       }, e -> {
-        onError(new Event.Builder(Event.MEMBER_DELETE_ERROR).string(e.getLocalizedMessage()).build(), e);
+        onResult(new Event.Builder(Event.ERROR).integer(Event.MEMBER_DELETE).string(e.getLocalizedMessage()).build());
       });
   }
 

+ 3 - 13
app/src/main/java/kr/co/zumo/app/lifeplus/model/Model.java

@@ -9,11 +9,11 @@ import android.util.Log;
 import io.reactivex.android.schedulers.AndroidSchedulers;
 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.network.NetworkWatcher;
 import kr.co.zumo.app.lifeplus.util.StringUtil;
 import kr.co.zumo.app.lifeplus.view.Event;
-import kr.co.zumo.app.lifeplus.ILifeCycle;
 import kr.co.zumo.app.lifeplus.view.fragment.factory.BasicFragmentFactory;
 import kr.co.zumo.app.lifeplus.view.fragment.factory.FragmentFactory;
 import kr.co.zumo.app.lifeplus.view.presenter.Presenter;
@@ -81,18 +81,8 @@ public abstract class Model extends ViewModel implements ILifeCycle {
     try {
       listener.onResult(event);
     } catch (Throwable throwable) {
-      onError(new Event.Builder(Event.ERROR).build(), throwable);
-    }
-  }
-
-  protected void onError(Event event, Throwable throwable) {
-    Log.e("APP# Model | onError", "|" + throwable.toString());
-    try {
-      listener.onResult(event);
-    } catch (Throwable e) {
-      Log.e("APP# Model | onError", "| final >>>>>>>>>> " + e.toString());
-      e.printStackTrace();
-      FinalAlert.create(event, throwable);
+      throwable.printStackTrace();
+      FinalAlert.create(event);
     }
   }
 

+ 7 - 12
app/src/main/java/kr/co/zumo/app/lifeplus/model/SignUpModel.java

@@ -35,11 +35,6 @@ import kr.co.zumo.app.lifeplus.view.Event;
  */
 public class SignUpModel extends Model {
 
-  public static final int EVENT_BANNER = 824;
-  public static final int EVENT_POLICY_REQUEST = 346;
-  public static final int EVENT_POLICY_CONFIRM = 347;
-  public static final int EVENT_JOINED = 735;
-
   protected CompositeDisposable disposable = new CompositeDisposable();
 
   protected ArrayList<PolicyBean> agreeItems;
@@ -135,7 +130,7 @@ public class SignUpModel extends Model {
     bannerItems.add(new BannerBean(1, ResourceUtil.getString(R.string.sign_up_benefit2), ResourceUtil.getString(R.string.sign_up_benefit2_detail)));
     bannerItems.add(new BannerBean(2, ResourceUtil.getString(R.string.sign_up_benefit3), ResourceUtil.getString(R.string.sign_up_benefit3_detail)));
 
-    onResult(new Event.Builder(Event.RESULT).integer(EVENT_BANNER).build());
+    onResult(new Event.Builder(Event.RESULT).integer(Event.BANNER_REQUEST).build());
   }
 
   /**
@@ -166,10 +161,10 @@ public class SignUpModel extends Model {
           Log.i("APP# SignUpModel | requestPolicy", "|" + resultBean.toPrettyJson());
           if (resultBean.isSuccess()) {
             agreeItems = resultBean.getData();
-            onResult(new Event.Builder(Event.RESULT).integer(EVENT_POLICY_REQUEST).build());
+            onResult(new Event.Builder(Event.RESULT).integer(Event.POLICY_REQUEST).build());
           }
         }, e -> {
-          onError(new Event.Builder(Event.ERROR).integer(EVENT_POLICY_REQUEST).string(e.getLocalizedMessage()).build(), e);
+          onResult(new Event.Builder(Event.ERROR).integer(Event.POLICY_REQUEST).string(e.getLocalizedMessage()).build());
         })
     );
   }
@@ -235,9 +230,9 @@ public class SignUpModel extends Model {
           .subscribe(resultBean -> {
             Log.i("APP# SignUpModel | signUp", "|" + resultBean.toPrettyJson());
             saveUserId(resultBean.getData().getUserNo());
-            onResult(new Event.Builder(Event.RESULT).integer(EVENT_JOINED).build());
+            onResult(new Event.Builder(Event.RESULT).integer(Event.MEMBER_JOIN).build());
           }, e -> {
-            onError(new Event.Builder(Event.ERROR).integer(EVENT_JOINED).string(e.getLocalizedMessage()).build(), e);
+            onResult(new Event.Builder(Event.ERROR).integer(Event.MEMBER_JOIN).string(e.getLocalizedMessage()).build());
           })
       );
     }
@@ -285,9 +280,9 @@ public class SignUpModel extends Model {
         .subscribeOn(Schedulers.io())
         .observeOn(AndroidSchedulers.mainThread())
         .subscribe(resultBean -> {
-          onResult(new Event.Builder(Event.RESULT).integer(EVENT_POLICY_CONFIRM).build());
+          onResult(new Event.Builder(Event.RESULT).integer(Event.POLICY_CONFIRM).build());
         }, e -> {
-          onError(new Event.Builder(Event.ERROR).integer(EVENT_POLICY_CONFIRM).string(e.getLocalizedMessage()).build(), e);
+          onResult(new Event.Builder(Event.ERROR).integer(Event.POLICY_CONFIRM).string(e.getLocalizedMessage()).build());
         })
     );
   }

+ 10 - 3
app/src/main/java/kr/co/zumo/app/lifeplus/view/Event.java

@@ -28,6 +28,7 @@ public class Event {
    * Constants
    ***********************************/
 
+  // main event
   public static final int NONE = -1;
   public static final int CLICK = 0;
   public static final int BACK = 1;
@@ -56,8 +57,7 @@ public class Event {
   public static final int RESET = 28;
   public static final int FAQ = 29;
   public static final int DELETE = 30;
-  public static final int MEMBER_DELETE_COMPLETED = 31;
-  public static final int MEMBER_DELETE_ERROR = 32;
+  public static final int COMPLETED = 31;
   public static final int TUTORIAL_END = 33;
 
   @Retention(RetentionPolicy.SOURCE)
@@ -65,10 +65,17 @@ public class Event {
     NONE, CLICK, BACK, SIGN_UP, LOGIN, CHECK, UNCHECK, JOINED, TUTORIAL_LEFT, TUTORIAL_RIGHT,
     RETRY, INPUT_PIN, NETWORK_CONNECTED, CHANGED, INIT, DETAIL, ERROR, UNLOCK, RESET,
     SUCCESS, FAIL, CANCEL, EMAIL_CLICK, SPECIAL_CODE_CLICK, CONFIRM, RESULT, FAQ, DELETE,
-    MEMBER_DELETE_COMPLETED, MEMBER_DELETE_ERROR, TUTORIAL_END,
+    COMPLETED, TUTORIAL_END,
   })
   public @interface ID {}
 
+  // sub event
+  public static final int BANNER_REQUEST = 1000;
+  public static final int POLICY_REQUEST = 1001;
+  public static final int POLICY_CONFIRM = 1002;
+  public static final int MEMBER_JOIN = 1003;
+  public static final int MEMBER_DELETE = 1004;
+
   /***********************************
    * Object
    ***********************************/

+ 8 - 4
app/src/main/java/kr/co/zumo/app/lifeplus/view/presenter/MainPresenter.java

@@ -65,11 +65,15 @@ public class MainPresenter extends Presenter<MainModel, IMainView> {
   public void onResult(Event event) {
 
     switch (event.getEventId()) {
-      case Event.MEMBER_DELETE_COMPLETED:
-        showAlert("탈퇴 완료");
+      case Event.COMPLETED:
+        if (event.getInteger() == Event.MEMBER_DELETE) {
+          showAlert("탈퇴 완료");
+        }
         break;
-      case Event.MEMBER_DELETE_ERROR:
-        showAlert("탈퇴 에러 발생 - " + event.getString());
+      case Event.ERROR:
+        if (event.getInteger() == Event.MEMBER_DELETE) {
+          showAlert("탈퇴 에러 발생 - " + event.getString());
+        }
         break;
       default:
         break;

+ 6 - 6
app/src/main/java/kr/co/zumo/app/lifeplus/view/presenter/signup/SignUpAgreePresenter.java

@@ -95,27 +95,27 @@ public class SignUpAgreePresenter extends Presenter<SignUpModel, ISignUpAgreeVie
 
     switch (event.getEventId()) {
       case Event.RESULT:
-        if (event.getInteger() == SignUpModel.EVENT_POLICY_REQUEST) {
+        if (event.getInteger() == Event.POLICY_REQUEST) {
           isLoaded = true;
           renderAfterReady();
         }
-        else if (event.getInteger() == SignUpModel.EVENT_POLICY_CONFIRM) {
+        else if (event.getInteger() == Event.POLICY_CONFIRM) {
           // 약관 동의 전송 했음;
           isSaved = true;
           signUp();
         }
-        else if (event.getInteger() == SignUpModel.EVENT_JOINED) {
+        else if (event.getInteger() == Event.MEMBER_JOIN) {
           login();
         }
         break;
       case Event.ERROR:
-        if (event.getInteger() == SignUpModel.EVENT_POLICY_REQUEST) {
+        if (event.getInteger() == Event.POLICY_REQUEST) {
           showErrorPopup(event.getString());
         }
-        else if (event.getInteger() == SignUpModel.EVENT_POLICY_CONFIRM) {
+        else if (event.getInteger() == Event.POLICY_CONFIRM) {
           showErrorPopup(event.getString());
         }
-        else if (event.getInteger() == SignUpModel.EVENT_JOINED) {
+        else if (event.getInteger() == Event.MEMBER_JOIN) {
           showErrorPopup(event.getString());
         }
         break;

+ 1 - 4
app/src/main/java/kr/co/zumo/app/lifeplus/view/presenter/signup/SignUpStartPresenter.java

@@ -64,14 +64,11 @@ public class SignUpStartPresenter extends Presenter<SignUpModel, ISignUpStartVie
   public void onResult(Event event) {
     switch (event.getEventId()) {
       case Event.RESULT:
-        if (event.getInteger() == SignUpModel.EVENT_BANNER) {
+        if (event.getInteger() == Event.BANNER_REQUEST) {
           isLoaded = true;
           renderAfterReady();
         }
         break;
-      case Event.ERROR:
-        // todo error
-        break;
       default:
         break;
     }