|
|
@@ -4,7 +4,6 @@
|
|
|
package kr.co.zumo.app.lifeplus.view.screen.setting.member;
|
|
|
|
|
|
import android.text.Spanned;
|
|
|
-import android.util.Log;
|
|
|
|
|
|
import kr.co.zumo.app.R;
|
|
|
import kr.co.zumo.app.lifeplus.model.verify.Verifier;
|
|
|
@@ -75,28 +74,44 @@ public class SettingMemberPasswordPresenter extends Presenter<SettingMemberPassw
|
|
|
|
|
|
@Override
|
|
|
public void onScreenReady() {
|
|
|
-
|
|
|
+ view.setEnabledChangeButton(false);
|
|
|
+ view.setVisibleValidationPasswordCurrent(false);
|
|
|
+ view.setVisibleValidationPasswordNew(false);
|
|
|
+ view.setVisibleValidationPasswordAgain(false);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void onResult(Event event) {
|
|
|
+ switch (event.getEventId()) {
|
|
|
+ case Event.RESULT:
|
|
|
+ back();
|
|
|
+ break;
|
|
|
+ case Event.ERROR:
|
|
|
+ showErrorDialog(event.getString());
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
+ private void setEnabledChangeButton(int currentValid, int newValid, int againValid) {
|
|
|
+ view.setEnabledChangeButton(Verifier.isOk(currentValid) && Verifier.isOk(newValid) && Verifier.isOk(againValid));
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 전체 패스워드
|
|
|
*
|
|
|
- * @param s
|
|
|
+ * @param sequence
|
|
|
*/
|
|
|
- public void onInputPasswordCurrent(CharSequence s) {
|
|
|
- Log.d("APP# SettingMemberPasswordPresenter | onInputPasswordCurrent", "| input => " + s.toString());
|
|
|
- String password = s.toString();
|
|
|
+ public void onInputPasswordCurrent(CharSequence sequence) {
|
|
|
+ String password = sequence.toString();
|
|
|
int result = verifyPasswordCurrent(password);
|
|
|
- Log.d("APP# SettingMemberPasswordPresenter | onInputPasswordCurrent", "|" + " result: " + result);
|
|
|
|
|
|
if (Verifier.isOk(result)) {
|
|
|
model.setPasswordCurrent(password);
|
|
|
}
|
|
|
+
|
|
|
+ setEnabledChangeButton(result, verifyPasswordNew(model.getPasswordNew()), verifyPasswordAgain(model.getPasswordAgain()));
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -111,7 +126,6 @@ public class SettingMemberPasswordPresenter extends Presenter<SettingMemberPassw
|
|
|
* @return
|
|
|
*/
|
|
|
public CharSequence onFilterPasswordCurrent(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
|
|
|
- Log.d("APP# SettingMemberPasswordPresenter | onFilterPasswordCurrent", "| filter: " + source.toString());
|
|
|
int result = model.verifyInputPasswordCurrent(source, start, end, dest, dstart, dend);
|
|
|
if (Verifier.isOk(result)) {
|
|
|
return null;
|
|
|
@@ -163,10 +177,151 @@ public class SettingMemberPasswordPresenter extends Presenter<SettingMemberPassw
|
|
|
}
|
|
|
|
|
|
public void onInputPasswordNew(CharSequence sequence) {
|
|
|
+ String password = sequence.toString();
|
|
|
+ int result = verifyPasswordNew(password);
|
|
|
|
|
|
+ if (Verifier.isOk(result)) {
|
|
|
+ model.setPasswordNew(password);
|
|
|
+ }
|
|
|
+ setEnabledChangeButton(verifyPasswordCurrent(model.getPasswordCurrent()), result, verifyPasswordAgain(model.getPasswordAgain()));
|
|
|
+ }
|
|
|
+
|
|
|
+ public CharSequence onFilterPasswordNew(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
|
|
|
+ int result = model.verifyInputPasswordNew(source, start, end, dest, dstart, dend);
|
|
|
+ if (Verifier.isOk(result)) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ if (result == VerifierPassword.FAIL_EMOTICON) {
|
|
|
+ // 이모티콘 사용 불가
|
|
|
+ view.setVisibleValidationPasswordNew(true);
|
|
|
+ view.setValidationPasswordNew(ResourceUtil.getString(R.string.setting_password_current_validation_emoticon));
|
|
|
+ }
|
|
|
+ return "";
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- public void onInputPasswordNewAgain(CharSequence sequence) {
|
|
|
+ private int verifyPasswordNew(String password) {
|
|
|
+ int verifyResult = model.verifyPasswordNew(password);
|
|
|
+ if (verifyResult == VerifierPassword.READY) {
|
|
|
+ // 아무런 입력이 없음
|
|
|
+ view.setVisibleValidationPasswordNew(false);
|
|
|
+ view.setValidationPasswordNew(ResourceUtil.getString(R.string.empty_string));
|
|
|
+ }
|
|
|
+ else if (verifyResult == VerifierPassword.FAIL_LESS) {
|
|
|
+ // 10자 미만 입력
|
|
|
+ view.setVisibleValidationPasswordNew(true);
|
|
|
+ view.setValidationPasswordNew(ResourceUtil.getString(R.string.setting_password_new_validation_10_character));
|
|
|
+ }
|
|
|
+ else if (verifyResult == VerifierPassword.FAIL_MIX) {
|
|
|
+ // 문자 혼합
|
|
|
+ view.setVisibleValidationPasswordNew(true);
|
|
|
+ view.setValidationPasswordNew(ResourceUtil.getString(R.string.setting_password_new_validation_10_character));
|
|
|
+ }
|
|
|
+ else if (verifyResult == VerifierPassword.FAIL_MATCH_EMAIL) {
|
|
|
+ // 이메일과 같은 암호
|
|
|
+ view.setVisibleValidationPasswordNew(true);
|
|
|
+ view.setValidationPasswordNew(ResourceUtil.getString(R.string.setting_password_new_validation_email));
|
|
|
+ }
|
|
|
+ else if (verifyResult == VerifierPassword.FAIL_MISS_MATCH_CURRENT) {
|
|
|
+ // 현재 비밀번호와 같은 암호
|
|
|
+ view.setVisibleValidationPasswordNew(true);
|
|
|
+ view.setValidationPasswordNew(ResourceUtil.getString(R.string.setting_password_new_validation_match));
|
|
|
+ }
|
|
|
+ else if (verifyResult == VerifierPassword.FAIL_4_STRAIGHT) {
|
|
|
+ // 4자 연속
|
|
|
+ view.setVisibleValidationPasswordNew(true);
|
|
|
+ view.setValidationPasswordNew(ResourceUtil.getString(R.string.setting_password_new_validation_4_straight));
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ // 통과
|
|
|
+ view.setVisibleValidationPasswordNew(false);
|
|
|
+ view.setValidationPasswordNew(ResourceUtil.getString(R.string.empty_string));
|
|
|
+ }
|
|
|
+
|
|
|
+ return verifyResult;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void onInputPasswordAgain(CharSequence sequence) {
|
|
|
+ String password = sequence.toString();
|
|
|
+ int result = verifyPasswordAgain(password);
|
|
|
+ if (Verifier.isOk(result)) {
|
|
|
+ model.setPasswordAgain(password);
|
|
|
+ }
|
|
|
+ setEnabledChangeButton(verifyPasswordCurrent(model.getPasswordCurrent()), verifyPasswordNew(model.getPasswordNew()), result);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public CharSequence onFilterPasswordAgain(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
|
|
|
+ int result = model.verifyInputPasswordAgain(source, start, end, dest, dstart, dend);
|
|
|
+ if (Verifier.isOk(result)) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ if (result == VerifierPassword.FAIL_EMOTICON) {
|
|
|
+ // 이모티콘 사용 불가
|
|
|
+ view.setVisibleValidationPasswordAgain(true);
|
|
|
+ view.setValidationPasswordAgain(ResourceUtil.getString(R.string.setting_password_current_validation_emoticon));
|
|
|
+ }
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private int verifyPasswordAgain(String password) {
|
|
|
+ int verifyResult = model.verifyPasswordAgain(password);
|
|
|
+ if (verifyResult == VerifierPassword.READY) {
|
|
|
+ // 아무런 입력이 없음
|
|
|
+ view.setVisibleValidationPasswordAgain(false);
|
|
|
+ view.setValidationPasswordAgain(ResourceUtil.getString(R.string.empty_string));
|
|
|
+ }
|
|
|
+ else if (verifyResult == VerifierPassword.FAIL_LESS) {
|
|
|
+ // 10자 미만 입력
|
|
|
+ view.setVisibleValidationPasswordAgain(true);
|
|
|
+ view.setValidationPasswordAgain(ResourceUtil.getString(R.string.setting_password_new_again_validation_10_character));
|
|
|
+ }
|
|
|
+ else if (verifyResult == VerifierPassword.FAIL_MIX) {
|
|
|
+ // 문자 혼합
|
|
|
+ view.setVisibleValidationPasswordAgain(true);
|
|
|
+ view.setValidationPasswordAgain(ResourceUtil.getString(R.string.setting_password_new_again_validation_10_character));
|
|
|
+ }
|
|
|
+ else if (verifyResult == VerifierPassword.FAIL_MATCH_EMAIL) {
|
|
|
+ // 이메일과 같은 암호
|
|
|
+ view.setVisibleValidationPasswordAgain(true);
|
|
|
+ view.setValidationPasswordAgain(ResourceUtil.getString(R.string.setting_password_new_again_validation_email));
|
|
|
+ }
|
|
|
+ else if (verifyResult == VerifierPassword.FAIL_MISS_MATCH_CURRENT) {
|
|
|
+ // 현재 비밀번호와 같은 암호
|
|
|
+ view.setVisibleValidationPasswordAgain(true);
|
|
|
+ view.setValidationPasswordAgain(ResourceUtil.getString(R.string.setting_password_new_again_validation_match));
|
|
|
+ }
|
|
|
+ else if (verifyResult == VerifierPassword.FAIL_4_STRAIGHT) {
|
|
|
+ // 4자 연속
|
|
|
+ view.setVisibleValidationPasswordAgain(true);
|
|
|
+ view.setValidationPasswordAgain(ResourceUtil.getString(R.string.setting_password_new_again_validation_4_straight));
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ // 통과
|
|
|
+ view.setVisibleValidationPasswordAgain(false);
|
|
|
+ view.setValidationPasswordAgain(ResourceUtil.getString(R.string.empty_string));
|
|
|
+ }
|
|
|
+
|
|
|
+ return verifyResult;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 변경 버튼 누름
|
|
|
+ */
|
|
|
+ public void onClickChange() {
|
|
|
+ // 새 비번 둘이 맞는지 확인
|
|
|
+ if (model.isMatchNewPassword()) {
|
|
|
+ model.updatePassword();
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ view.setVisibleValidationPasswordAgain(true);
|
|
|
+ view.setValidationPasswordAgain(ResourceUtil.getString(R.string.setting_password_new_again_validation_miss_match));
|
|
|
+ }
|
|
|
+
|
|
|
+ // todo api 통신 후 패스워드 변경됐는지 확인
|
|
|
|
|
|
}
|
|
|
}
|