Ver código fonte

[공통][Common] 핀 관련 요구사항 수정

Hasemi 6 anos atrás
pai
commit
223b1ca2e8

+ 12 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/model/LifeplusPreferences.java

@@ -39,6 +39,7 @@ public class LifeplusPreferences {
   public final static String PROMOTION_SKIP_TIME = "current_time_millis";
   public final static String TAG_LATEST_LIST = "tag_latest_list";
   public final static String PUSH_MESSAGES = "push_messages";
+  public final static String PIN_COUNT = "pin_count";
 
 
   /**
@@ -331,4 +332,15 @@ public class LifeplusPreferences {
   public String getPushMessages() {
     return preferences.get(PUSH_MESSAGES, "");
   }
+
+  /**
+   * Pin count 저장
+   *
+   * @return
+   */
+  public void setPinCount(int count) {
+    preferences.put(PIN_COUNT, count);
+  }
+
+  public int getPinCount() {return preferences.get(PIN_COUNT, 0);}
 }

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

@@ -259,6 +259,7 @@ public final class SuperModel implements IMemberStatusManager {
    * @param encryptedPin 암호화된 핀
    */
   public void saveEncryptedPin(String encryptedPin) {
+    SuperModel.getInstance().getPreferences().setPinCount(0);
     getPreferences().setEncryptedPin(encryptedPin);
   }
 

+ 25 - 3
app/src/main/java/kr/co/zumo/app/lifeplus/view/custom/pin/CustomPinPresenter.java

@@ -3,12 +3,16 @@
  */
 package kr.co.zumo.app.lifeplus.view.custom.pin;
 
+import android.util.Log;
+
 import java.util.concurrent.TimeUnit;
 
 import io.reactivex.Completable;
 import io.reactivex.android.schedulers.AndroidSchedulers;
 import io.reactivex.disposables.CompositeDisposable;
 import kr.co.zumo.app.R;
+import kr.co.zumo.app.lifeplus.model.LifeplusPreferences;
+import kr.co.zumo.app.lifeplus.model.SuperModel;
 import kr.co.zumo.app.lifeplus.util.ResourceUtil;
 
 /**
@@ -25,14 +29,14 @@ public abstract class CustomPinPresenter implements IPinContract.Presenter {
 
   protected IPinContract.View view;
   protected IPinContract.Listener listener;
-
+  protected LifeplusPreferences lifeplusPreferences;
   protected String pin;
-  protected int matchCount;
   protected CompositeDisposable disposable = new CompositeDisposable();
 
   public CustomPinPresenter(IPinContract.View view, IPinContract.Listener listener) {
     this.view = view;
     this.listener = listener;
+    this.lifeplusPreferences = SuperModel.getInstance().getPreferences();
   }
 
   /**
@@ -99,6 +103,9 @@ public abstract class CustomPinPresenter implements IPinContract.Presenter {
     view.updateGuideText(getGuideStringId());
     view.updateTitleText(getTitleStringId());
     view.restart();
+    if (getPinCount() != 0) {
+      retry();
+    }
   }
 
   @Override
@@ -120,9 +127,12 @@ public abstract class CustomPinPresenter implements IPinContract.Presenter {
   @Override
   public final void retry() {
     // 일치 하지 않으면 5회 재시도 후
+    Log.e("APP#  CustomPinPresenter | retry", "getPinCount() |" + getPinCount());
+    int matchCount = getPinCount();
     if (++matchCount < 5) {
+      setPinCount(matchCount);
       view.updateGuideTextColor(ResourceUtil.getColor(R.color.CF12815));
-      view.updateGuideText(String.format(ResourceUtil.getString(R.string.pin_miss_match_error_repeat), matchCount));
+      view.updateGuideText(String.format(ResourceUtil.getString(R.string.pin_miss_match_error_repeat), getPinCount()));
       view.restart();
     }
     else {
@@ -130,6 +140,7 @@ public abstract class CustomPinPresenter implements IPinContract.Presenter {
            5회 이상 불일치 시 ‘간편암호가 5회이상 일치하지 않아, 입력값이 초기화됩니다.’ 밸리데이션 문구 1초간 노출
           - 입력값 초기화된 상태로 STEP1로 변경
            */
+      setPinCount(matchCount);
       view.updateGuideTextColor(ResourceUtil.getColor(R.color.CF12815));
       view.updateGuideText(getFailGuideStringId());
 
@@ -159,4 +170,15 @@ public abstract class CustomPinPresenter implements IPinContract.Presenter {
       disposable = null;
     }
   }
+
+  @Override
+  public void setPinCount(int count) {
+    Log.e("APP#  CustomPinPresenter | setPinCount", " count |" + count);
+    SuperModel.getInstance().getPreferences().setPinCount(count);
+  }
+
+  @Override
+  public int getPinCount() {
+    return SuperModel.getInstance().getPreferences().getPinCount();
+  }
 }

+ 18 - 2
app/src/main/java/kr/co/zumo/app/lifeplus/view/custom/pin/CustomPinRegisterPresenter.java

@@ -9,6 +9,7 @@ import io.reactivex.Completable;
 import io.reactivex.android.schedulers.AndroidSchedulers;
 import io.reactivex.disposables.CompositeDisposable;
 import kr.co.zumo.app.R;
+import kr.co.zumo.app.lifeplus.model.SuperModel;
 import kr.co.zumo.app.lifeplus.util.ResourceUtil;
 import kr.co.zumo.app.lifeplus.util.StringUtil;
 
@@ -53,6 +54,7 @@ public class CustomPinRegisterPresenter implements IPinContract.Presenter {
     view.updateTitleText(R.string.sign_up_register_pin_title);
     view.restart();
   }
+
   @Override
   public void onPinResult(String result) {
     if (StringUtil.isFull(pin)) {
@@ -61,13 +63,16 @@ public class CustomPinRegisterPresenter implements IPinContract.Presenter {
       // 일치하는지 확인
       if (pin.length() == 4 && pin.equals(result)) {
         // 일치 하면 모델에 저장
+        setPinCount(0);
         listener.onPinResult(pin);
       }
       else {
         // 일치 하지 않으면 5회 재시도 후
-        if (++matchCount < 5) {
+        matchCount = getPinCount();
+        if (matchCount++ < 5) {
+          setPinCount(matchCount);
           view.updateGuideTextColor(ResourceUtil.getColor(R.color.CF12815));
-          view.updateGuideText(String.format(ResourceUtil.getString(R.string.pin_miss_match_error_repeat), matchCount));
+          view.updateGuideText(String.format(ResourceUtil.getString(R.string.pin_miss_match_error_repeat), getPinCount()));
           view.restart();
         }
         else {
@@ -75,6 +80,7 @@ public class CustomPinRegisterPresenter implements IPinContract.Presenter {
            5회 이상 불일치 시 ‘간편암호가 5회이상 일치하지 않아, 입력값이 초기화됩니다.’ 밸리데이션 문구 1초간 노출
           - 입력값 초기화된 상태로 STEP1로 변경
            */
+          setPinCount(matchCount);
           view.updateGuideTextColor(ResourceUtil.getColor(R.color.CF12815));
           view.updateGuideText(R.string.pin_miss_match_init);
 
@@ -128,4 +134,14 @@ public class CustomPinRegisterPresenter implements IPinContract.Presenter {
       disposable = null;
     }
   }
+
+  @Override
+  public void setPinCount(int count) {
+    SuperModel.getInstance().getPreferences().setPinCount(count);
+  }
+
+  @Override
+  public int getPinCount() {
+    return SuperModel.getInstance().getPreferences().getPinCount();
+  }
 }

+ 10 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/custom/pin/CustomPinResetPresenter.java

@@ -129,4 +129,14 @@ public class CustomPinResetPresenter implements IPinContract.Presenter {
       disposable = null;
     }
   }
+
+  @Override
+  public void setPinCount(int i) {
+
+  }
+
+  @Override
+  public int getPinCount() {
+    return 0;
+  }
 }

+ 3 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/custom/pin/IPinContract.java

@@ -130,6 +130,9 @@ public interface IPinContract {
 
     void dispose();
 
+    void setPinCount(int i);
+
+    int getPinCount();
   }
 
   interface Listener {

+ 6 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/dialog/PinConfirmDialog.java

@@ -6,6 +6,7 @@ package kr.co.zumo.app.lifeplus.view.dialog;
 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;
@@ -84,6 +85,7 @@ public class PinConfirmDialog extends DialogBase<ICustomDialogListener<PinConfir
       @Override
       public void onClickPinReset() {
         if (null != getCustomListener()) {
+          Log.e("APP#  PinConfirmDialog | onClickPinReset", "|");
           getCustomListener().onDialogResult(PinConfirmDialog.this, new Event.Builder(Event.RESET).build());
         }
       }
@@ -134,4 +136,8 @@ public class PinConfirmDialog extends DialogBase<ICustomDialogListener<PinConfir
     isResetButtonVisible = isVisible;
   }
 
+  public void resetPinCount() {
+    Log.e("APP#  PinConfirmDialog | resetPinCount", "|" + "resetPinCount");
+    pinPresenter.setPinCount(0);
+  }
 }

+ 2 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/presenter/Presenter.java

@@ -438,8 +438,10 @@ public abstract class Presenter<M extends Model, V extends IView> implements ILi
             case Event.CONFIRM:
               String inputPin = event.getString();
               if (model.verifyPin(inputPin)) {
+                dialog.resetPinCount();
                 dialog.dispose();
                 doAfterConfirm.run();
+
               }
               else {
                 dialog.retry();

+ 1 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/category/CategoryFilterModel.java

@@ -481,7 +481,7 @@ public abstract class CategoryFilterModel extends CategoryMainModel {
   }
 
   /**
-   * filter data reset
+   * filter data resetPinCount
    * - need commit too
    */
   public void resetFilter() {