Преглед изворни кода

[설정][New] 스페셜코드/추천인 등록 유효성 체크 수정

hyodong.min пре 7 година
родитељ
комит
d2bb119c3b

+ 0 - 2
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/setting/code/SettingCodeFragment.java

@@ -6,7 +6,6 @@ package kr.co.zumo.app.lifeplus.view.screen.setting.code;
 import android.os.Bundle;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
-import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -118,7 +117,6 @@ public class SettingCodeFragment extends FragmentBase<SettingCodePresenter> impl
    ***********************************/
   @Override
   public void setValidationSpecialCode(String string) {
-    Log.i("APP# SettingCodeFragment | setValidationSpecialCode", "|" + string);
     textSpecialValidation.setText(StringUtil.fromHtml(string));
   }
 

+ 32 - 14
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/setting/code/SettingCodeModel.java

@@ -217,6 +217,14 @@ public class SettingCodeModel extends Model {
           SettingModelHelper.getInstance().setIncreasedCoin(codeBean.getCoin());
         }
 
+        if (Verifier.isOk(verifySpecialCodeInternal(specialCode))) {
+          SettingModelHelper.getInstance().setSpecialCode(specialCode);
+        }
+
+        if (Verifier.isOk(verifyRecommendCodeInternal(recommendCode))) {
+          SettingModelHelper.getInstance().setRecommendCode(recommendCode);
+        }
+
         onResult(new Event.Builder(Event.RESULT).integer(Event.CODE_REGISTER).build());
       }
 
@@ -246,8 +254,12 @@ public class SettingCodeModel extends Model {
    * @return
    */
   public int verifySpecialCode() {
+    return verifySpecialCodeInternal(getSpecialCode());
+  }
+
+  private int verifySpecialCodeInternal(String code) {
     int result;
-    int len = getSpecialCode().length();
+    int len = code.length();
     if (len == 0) {
       result = Verifier.READY;
     }
@@ -270,24 +282,30 @@ public class SettingCodeModel extends Model {
    */
   public int verifyRecommendCode() {
     int result;
-    int len = getRecommendCode().length();
     if (hasRecommendCodeRegistered()) {
       // 이미 추천인 코드가 있음. 그냥 통과.
       result = Verifier.DISABLED;
     }
     else {
-      if (len == 0) {
-        result = Verifier.READY;
-      }
-      else if (len < recommendCodeLength) {
-        result = Verifier.FAIL_LESS;
-      }
-      else if (len > recommendCodeLength) {
-        result = Verifier.FAIL_OVER;
-      }
-      else {
-        result = Verifier.OK;
-      }
+      result = verifyRecommendCodeInternal(getRecommendCode());
+    }
+    return result;
+  }
+
+  private int verifyRecommendCodeInternal(String code) {
+    int result;
+    int len = code.length();
+    if (len == 0) {
+      result = Verifier.READY;
+    }
+    else if (len < recommendCodeLength) {
+      result = Verifier.FAIL_LESS;
+    }
+    else if (len > recommendCodeLength) {
+      result = Verifier.FAIL_OVER;
+    }
+    else {
+      result = Verifier.OK;
     }
     return result;
   }

+ 37 - 12
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/setting/code/SettingCodePresenter.java

@@ -41,8 +41,8 @@ public class SettingCodePresenter extends Presenter<SettingCodeModel, ISettingCo
 
   @Override
   protected void startInternal() {
-    view.setEnabledAll(false);
-    view.setRecommendInputEnabled(false);
+//    view.setEnabledAll(false);
+//    view.setRecommendInputEnabled(false);
 
     /**
      * onScreenReady() 에 doubleChecker.checkFirst() 를 넣으면 onStart() 보다 먼저 실행되어 enabled = false 로 진입된다.
@@ -55,8 +55,8 @@ public class SettingCodePresenter extends Presenter<SettingCodeModel, ISettingCo
 
   @Override
   protected void stopInternal() {
-    view.setEnabledAll(false);
-    view.setRecommendInputEnabled(false);
+//    view.setEnabledAll(false);
+//    view.setRecommendInputEnabled(false);
   }
 
   @Override
@@ -132,7 +132,7 @@ public class SettingCodePresenter extends Presenter<SettingCodeModel, ISettingCo
     else {
       view.setSpecialCodeLabelVisible(false);
     }
-    verifySpecialCode();
+    verifySpecialCode(false);
 
     // 추천인 코드가 있으면 추천인 입력창 비활성
     if (model.hasRecommendCodeRegistered()) {
@@ -142,6 +142,7 @@ public class SettingCodePresenter extends Presenter<SettingCodeModel, ISettingCo
     }
     else {
       view.setRecommendInputEnabled(true);
+      verifyRecommendCode(false);
     }
 
     view.setRegisteringButtonEnabled(false);
@@ -184,7 +185,10 @@ public class SettingCodePresenter extends Presenter<SettingCodeModel, ISettingCo
   }
 
   private void verifyAll() {
-    if (verifySpecialCode() || verifyRecommendCode()) {
+    boolean hasSpecialCode = verifySpecialCode(false);
+    boolean hasRecommendCode = verifyRecommendCode(false);
+    // 스페셜 코드 검증은 '등록' 버튼을 누를 때만 한다.
+    if (hasSpecialCode || hasRecommendCode) {
       view.setRegisteringButtonEnabled(true);
     }
     else {
@@ -192,14 +196,16 @@ public class SettingCodePresenter extends Presenter<SettingCodeModel, ISettingCo
     }
   }
 
-  private boolean verifySpecialCode() {
+  private boolean verifySpecialCode(boolean isDisplayFailMessage) {
     int verifyResult = model.verifySpecialCode();
     boolean result = false;
     if (verifyResult == Verifier.READY) {
       view.setValidationSpecialCode(ResourceUtil.getString(R.string.special_code_input));
     }
     else if (verifyResult == Verifier.FAIL_LESS || verifyResult == Verifier.FAIL_OVER) {
-      view.setValidationSpecialCode(ResourceUtil.getString(R.string.special_code_input_need_12_characters));
+      if (isDisplayFailMessage) {
+        view.setValidationSpecialCode(ResourceUtil.getString(R.string.special_code_input_need_12_characters));
+      }
     }
     else {
       result = true;
@@ -209,7 +215,7 @@ public class SettingCodePresenter extends Presenter<SettingCodeModel, ISettingCo
     return result;
   }
 
-  private boolean verifyRecommendCode() {
+  private boolean verifyRecommendCode(boolean isDisplayFailMessage) {
     int verifyResult = model.verifyRecommendCode();
     boolean result = false;
     if (verifyResult == Verifier.DISABLED) {
@@ -221,7 +227,9 @@ public class SettingCodePresenter extends Presenter<SettingCodeModel, ISettingCo
         view.setValidationRecommendCode(ResourceUtil.getString(R.string.recommend_code_input));
       }
       else if (verifyResult == Verifier.FAIL_LESS || verifyResult == Verifier.FAIL_OVER) {
-        view.setValidationRecommendCode(ResourceUtil.getString(R.string.recommend_code_input_need_5_characters));
+        if (isDisplayFailMessage) {
+          view.setValidationRecommendCode(ResourceUtil.getString(R.string.recommend_code_input_need_5_characters));
+        }
       }
       else {
         result = true;
@@ -246,11 +254,28 @@ public class SettingCodePresenter extends Presenter<SettingCodeModel, ISettingCo
    * 등록 버튼 클릭 했음
    */
   public void onClickRegisteringButton() {
+    boolean canNext = false;
     // 완료되면 세팅 화면으로 이동;
+    boolean hasSpecialCode = verifySpecialCode(true);
+    boolean hasRecommendCode = verifyRecommendCode(true);
 
-    view.setEnabledAll(false);
+    if (hasSpecialCode && hasRecommendCode) {
+      // 둘 다 등록 가능
+      canNext = true;
+    }
+    else if (hasSpecialCode && (model.verifyRecommendCode() == Verifier.READY || model.verifyRecommendCode() == Verifier.DISABLED)) {
+      // 스페셜 가능 / 추천인 미입력 or 비활성
+      canNext = true;
+    }
+    else if (model.verifySpecialCode() == Verifier.READY && hasRecommendCode) {
+      // 스페셜 미입력 / 추천인 가능
+      canNext = true;
+    }
 
-    model.registerCodes();
+    if (canNext) {
+      view.setEnabledAll(false);
+      model.registerCodes();
+    }
   }
 
   @Override

Разлика између датотеке није приказан због своје велике величине
+ 6 - 7
app/src/sandbox/java/kr/co/zumo/app/lifeplus/network/api/LifeplusAPIService.java