Browse Source

[인증][New] 약관 동의 미입력 시 '인증번호 발송' 버튼은 비활성 표시지만 터치 시 팝업 보여줌

hyodong.min 6 năm trước cách đây
mục cha
commit
364b662518

+ 11 - 3
app/src/main/java/kr/co/zumo/app/lifeplus/view/custom/auth/IMobileAuthContract.java

@@ -66,12 +66,18 @@ public interface IMobileAuthContract {
     void doPhoneNumberCheckedValidationMessage(int stringId);
 
 
+    int BUTTON_FLAG_DISABLED = 0;
+    int BUTTON_FLAG_ENABLED = 1;
+    int BUTTON_FLAG_GREY = 2;
+
     /**
-     * 인증 정보 입력 UI 활성/비활성 시킴
+     * 인증 번호 요청 UI 활성/비활성 시킴
+     * - 인증 번호 요청 버튼의 상태는 3가지: 활성 1 /비활성 0 /중간 활성 2
+     * -> 중간 활성: UI 는 비활성 이지만 버튼 이벤트는 작동한다. 약관 동의를 하지 않은 경우에 적용
      *
-     * @param isEnabled
+     * @param enabledFlag
      */
-    void setEnabledRequestNumberButton(boolean isEnabled);
+    void setEnabledRequestNumberButton(int enabledFlag);
 
     /**
      * 인증 번호 입력 칸에 포커스 활성화
@@ -142,12 +148,14 @@ public interface IMobileAuthContract {
 
     /**
      * 성별체크시 마진 조절
+     *
      * @param isMale
      */
     void setGenderMargin(boolean isMale);
 
     /**
      * 국적체크시 마진 조절
+     *
      * @param isLocal
      */
     void setNationalityMargin(boolean isLocal);

+ 36 - 33
app/src/main/java/kr/co/zumo/app/lifeplus/view/custom/auth/MobileAuthPresenter.java

@@ -374,7 +374,7 @@ public class MobileAuthPresenter implements IMobileAuthContract.Presenter {
             if (resultBean.getCode() == LifeplusAPIBean.RETURN_MOBILE_AUTH_ERROR_NEED_FOR_30_DAYS
               || resultBean.getCode() == LifeplusAPIBean.RETURN_MOBILE_AUTH_ERROR_UNDER_14_YEARS
               || resultBean.getCode() == LifeplusAPIBean.RETURN_MOBILE_AUTH_ERROR_ALREADY_MEMBER
-              ) {
+            ) {
               // 성공
               doSomeWhenConfirmSuccess(resultBean);
             }
@@ -484,7 +484,7 @@ public class MobileAuthPresenter implements IMobileAuthContract.Presenter {
     Log.i("APP# MobileAuthPresenter | doSomeWhenConfirmSuccess", "|" + bean.toPrettyJson());
 
     view.setEnabledExpansionTimeButton(false);
-    view.setEnabledRequestNumberButton(false);
+    view.setEnabledRequestNumberButton(IMobileAuthContract.View.BUTTON_FLAG_DISABLED);
     view.setEnabledRequestConfirmTextView(false);
     view.setEnabledRequestConfirmButton(false);
     view.clearFocusAll();
@@ -498,34 +498,37 @@ public class MobileAuthPresenter implements IMobileAuthContract.Presenter {
   }
 
   private void verifyRequestNumberButton(boolean isDisplay) {
-    boolean isValidated = verifyRequestNumberValidation(isDisplay);
-    view.setEnabledRequestNumberButton(isValidated);
+    int validatedFlag = verifyRequestNumberValidation(isDisplay);
+    view.setEnabledRequestNumberButton(validatedFlag);
   }
 
-  private boolean verifyRequestNumberValidation(boolean isDisplay) {
-    boolean isValidated = true;
+  private int verifyRequestNumberValidation(boolean isDisplay) {
+    int validatedFlag = IMobileAuthContract.View.BUTTON_FLAG_ENABLED;
+
+    /**
+     * 약관 동의는 미입력 시 ui 는 달리 처리해준다.
+     */
+    if (verifyAgrees(userBean.getAgreeList()) == false) {
+      validatedFlag = IMobileAuthContract.View.BUTTON_FLAG_GREY;
+    }
+
     if (verifyName(userBean.getName(), isDisplay) == false) {
-      isValidated = false;
+      validatedFlag = IMobileAuthContract.View.BUTTON_FLAG_DISABLED;
     }
 
     if (verifyBirthDate(userBean.getBirthDate(), isDisplay) == false) {
-      isValidated = false;
+      validatedFlag = IMobileAuthContract.View.BUTTON_FLAG_DISABLED;
     }
 
     if (verifyPhoneNumber(userBean.getPhoneNumber(), isDisplay) == false) {
-      isValidated = false;
+      validatedFlag = IMobileAuthContract.View.BUTTON_FLAG_DISABLED;
     }
 
-    /**
-     * 약관 동의는 '인증번호 발송' 버튼 표시 여부에 관여하지 않고, 버튼을 눌렀을 때 별도 처리한다.
-     */
-//    if (verifyAgrees(userBean.getAgreeList()) == false) {
-//      isValidated = false;
-//    }
-
-    isValidated = isValidated && isAvailableRequestNumberButtonToDisable;
+    if (isAvailableRequestNumberButtonToDisable == false) {
+      validatedFlag = IMobileAuthContract.View.BUTTON_FLAG_DISABLED;
+    }
 
-    return isValidated;
+    return validatedFlag;
   }
 
   /**
@@ -534,35 +537,34 @@ public class MobileAuthPresenter implements IMobileAuthContract.Presenter {
   public void onAuthorizationNumberSendButtonClick() {
 //    Log.i("APP#  MobileAuthPresenter | onAuthorizationNumberSendButtonClick", "|" + userBean.toPrettyJson());
 
-    /**
-     * 키보드 등장, 포커스 주기
-     */
-    view.showEditTextAuthorizedNumberKeyboard();
-
-
     /**
      * 유효성 체크
      * - 실패 시 해당 위치로 이동
      * - 통과하면 api 호출
      */
-    boolean isValidated = verifyRequestNumberValidation(true);
+    int validatedFlag = verifyRequestNumberValidation(true);
 
-    if (isValidated) {
+    if (validatedFlag == IMobileAuthContract.View.BUTTON_FLAG_GREY) {
+      /**
+       * 약관 동의는 미입력 상태로 클릭했음.
+       */
+      onAgreeFail();
+    }
+    else if (validatedFlag == IMobileAuthContract.View.BUTTON_FLAG_ENABLED) {
+      // 모든 항목 입력 완료
 
       /**
-       * 약관 동의는 '인증번호 발송' 버튼 표시 여부에 관여하지 않고, 버튼을 눌렀을 때 별도 처리한다.
+       * 키보드 등장, 포커스 주기
        */
-      if (verifyAgrees(userBean.getAgreeList()) == false) {
-        onAgreeFail();
-        return;
-      }
+      view.showEditTextAuthorizedNumberKeyboard();
 
       // call api...
       Log.w("APP# MobileAuthPresenter | onAuthorizationNumberSendButtonClick", "|" + "call api ============ ");
 
       prepareConfirm();
 
-      view.setEnabledRequestNumberButton(false);
+      // 요청 버튼 비활성
+      view.setEnabledRequestNumberButton(IMobileAuthContract.View.BUTTON_FLAG_DISABLED);
 
       AuthNumberRequestBean bean = new AuthNumberRequestBean();
       bean.setName(userBean.getName());
@@ -693,6 +695,7 @@ public class MobileAuthPresenter implements IMobileAuthContract.Presenter {
     }
   }
 
+  // 인증 번호 요청 불가 상태 표시
   private boolean isAvailableRequestNumberButtonToDisable = true;
 
   private void countRetryButton() {
@@ -868,7 +871,7 @@ public class MobileAuthPresenter implements IMobileAuthContract.Presenter {
       len <= 7
         || birthDate.matches("^[012].+") == false
         || len > 8
-      ) {
+    ) {
       //숫자 7자리 이하 입력시, or YYYY 으로 시작 하지 않았을 경우;
       Log.i("APP# MobileAuthPresenter | verifyBirthDate", "|" + "birthDateLength check");
       if (isDisplay) {

+ 13 - 2
app/src/main/java/kr/co/zumo/app/lifeplus/view/custom/auth/MobileAuthView.java

@@ -359,8 +359,19 @@ public class MobileAuthView extends ConstraintLayout implements IMobileAuthContr
   }
 
   @Override
-  public void setEnabledRequestNumberButton(boolean isEnabled) {
-    buttonIdentifyNumberSend.setEnabled(isEnabled);
+  public void setEnabledRequestNumberButton(int enabledFlag) {
+    if (IMobileAuthContract.View.BUTTON_FLAG_ENABLED == enabledFlag) {
+      buttonIdentifyNumberSend.setTextColor(ResourceUtil.getColorStateList(R.color.button_state_color));
+      buttonIdentifyNumberSend.setEnabled(true);
+    }
+    else if (IMobileAuthContract.View.BUTTON_FLAG_GREY == enabledFlag) {
+      buttonIdentifyNumberSend.setTextColor(ResourceUtil.getColor(R.color.CC5C5C5));
+      buttonIdentifyNumberSend.setEnabled(true);
+    }
+    else {
+      buttonIdentifyNumberSend.setTextColor(ResourceUtil.getColorStateList(R.color.button_state_color));
+      buttonIdentifyNumberSend.setEnabled(false);
+    }
   }
 
   @Override