|
|
@@ -3,7 +3,9 @@
|
|
|
*/
|
|
|
package kr.co.zumo.app.lifeplus.view.screen.setting.code;
|
|
|
|
|
|
+import android.support.annotation.Nullable;
|
|
|
import android.util.Log;
|
|
|
+import android.widget.Toast;
|
|
|
|
|
|
import java.util.Arrays;
|
|
|
|
|
|
@@ -13,6 +15,7 @@ import kr.co.zumo.app.lifeplus.util.ResourceUtil;
|
|
|
import kr.co.zumo.app.lifeplus.util.StringUtil;
|
|
|
import kr.co.zumo.app.lifeplus.view.DoubleChecker;
|
|
|
import kr.co.zumo.app.lifeplus.view.Event;
|
|
|
+import kr.co.zumo.app.lifeplus.view.ToastProvider;
|
|
|
import kr.co.zumo.app.lifeplus.view.presenter.Presenter;
|
|
|
import kr.co.zumo.app.lifeplus.view.screen.common.CoinPopupDriver;
|
|
|
|
|
|
@@ -62,7 +65,6 @@ public class SettingCodePresenter extends Presenter<SettingCodeModel, ISettingCo
|
|
|
|
|
|
@Override
|
|
|
protected void startInternalOnce() {
|
|
|
- doubleChecker.checkFirst();
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -103,6 +105,7 @@ public class SettingCodePresenter extends Presenter<SettingCodeModel, ISettingCo
|
|
|
});
|
|
|
}
|
|
|
else {
|
|
|
+ showCodeToast();
|
|
|
onBackPressed();
|
|
|
}
|
|
|
}
|
|
|
@@ -121,6 +124,39 @@ public class SettingCodePresenter extends Presenter<SettingCodeModel, ISettingCo
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private void showCodeToast() {
|
|
|
+ /*
|
|
|
+ - 스페셜 코드가 있으면 팝업
|
|
|
+ - 추천인 이름이 있으면 팝업 (코인 표시)
|
|
|
+ */
|
|
|
+ if (StringUtil.isFull(model.getSpecialCodeType())) {
|
|
|
+ showCustomToast(
|
|
|
+ ResourceUtil.getString(R.string.special_code_confirm_success),
|
|
|
+ String.format(ResourceUtil.getString(R.string.special_code_confirm_success_detail), model.getSpecialCodeType()),
|
|
|
+ 0,
|
|
|
+ Toast.LENGTH_LONG
|
|
|
+ );
|
|
|
+
|
|
|
+ model.clearSpecialCodeType();
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtil.isFull(model.getRecommendName())) {
|
|
|
+ showCustomToast(
|
|
|
+ ResourceUtil.getString(R.string.recommend_special_code_confirm_success),
|
|
|
+ String.format(ResourceUtil.getString(R.string.recommend_confirm_success_detail), model.getRecommendName(), model.getIncreasedCoin()),
|
|
|
+ 0,
|
|
|
+ Toast.LENGTH_LONG
|
|
|
+ );
|
|
|
+
|
|
|
+ model.clearRecommendName();
|
|
|
+ model.clearIncreasedCoin();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void showCustomToast(String title, String detail, @Nullable int copyToastFlag, int duration) {
|
|
|
+ ToastProvider.showCodeShare(title, detail, copyToastFlag, duration);
|
|
|
+ }
|
|
|
+
|
|
|
private void showCoin() {
|
|
|
boolean[] codeResult = model.getCodeResult();
|
|
|
int prevCoin = model.getPrevCoin();
|
|
|
@@ -130,8 +166,7 @@ public class SettingCodePresenter extends Presenter<SettingCodeModel, ISettingCo
|
|
|
|
|
|
// 스페셜 코드우선 표시
|
|
|
if (codeResult[SettingCodeModel.CODE_SPECIAL_RESULT_INDEX]) {
|
|
|
-
|
|
|
- new CoinPopupDriver(getFragmentManager(), () -> {
|
|
|
+ Runnable listener = () -> {
|
|
|
// 완료 뒤 추천 코드 있으면 표시
|
|
|
if (codeResult[SettingCodeModel.CODE_RECOMMEND_RESULT_INDEX]) {
|
|
|
showRecommendCoin(prevCoin, givenCoin);
|
|
|
@@ -139,7 +174,10 @@ public class SettingCodePresenter extends Presenter<SettingCodeModel, ISettingCo
|
|
|
else {
|
|
|
onBackPressed();
|
|
|
}
|
|
|
- }, () -> {}).show(prevCoin, model.getGivenCoin(), R.string.coin_special_code_completed);
|
|
|
+ };
|
|
|
+
|
|
|
+ new CoinPopupDriver(getFragmentManager(), listener, listener)
|
|
|
+ .show(prevCoin, model.getGivenCoin(), R.string.coin_special_code_completed);
|
|
|
|
|
|
}
|
|
|
else if (codeResult[SettingCodeModel.CODE_RECOMMEND_RESULT_INDEX]) {
|
|
|
@@ -153,18 +191,34 @@ public class SettingCodePresenter extends Presenter<SettingCodeModel, ISettingCo
|
|
|
private void showRecommendCoin(int prevCoin, int givenCoin) {
|
|
|
new CoinPopupDriver(getFragmentManager(), () -> {
|
|
|
onBackPressed();
|
|
|
- }, () -> {}).show(prevCoin, givenCoin, R.string.coin_recommend_code_completed);
|
|
|
+ }, () -> {
|
|
|
+ onBackPressed();
|
|
|
+ }).show(prevCoin, givenCoin, R.string.coin_recommend_code_completed);
|
|
|
}
|
|
|
|
|
|
private void onInvalidCode(int resultIndex) {
|
|
|
+
|
|
|
if (resultIndex == Event.CODE_INVALID_SPECIAL_CODE) {
|
|
|
view.setValidationSpecialCode(ResourceUtil.getString(R.string.special_code_error));
|
|
|
}
|
|
|
else if (resultIndex == Event.CODE_INVALID_RECOMMEND_CODE) {
|
|
|
- view.setValidationSpecialCode(ResourceUtil.getString(R.string.recommend_code_error));
|
|
|
+ view.setValidationRecommendCode(ResourceUtil.getString(R.string.recommend_code_error));
|
|
|
}
|
|
|
|
|
|
view.setEnabledAll(true);
|
|
|
+
|
|
|
+ // 추천인 코드가 있으면 추천인 입력창 비활성
|
|
|
+ if (model.hasRecommendCodeRegistered()) {
|
|
|
+ setLoadedRecommendCode();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void setLoadedRecommendCode() {
|
|
|
+ view.removeTextWatcher();
|
|
|
+ view.setRecommendString(model.getLoadedRecommendCode());
|
|
|
+ view.setRecommendInputEnabled(false);
|
|
|
+ view.setValidationRecommendCode(ResourceUtil.getString(R.string.recommend_code_only_one_time));
|
|
|
+ view.addTextWatcher();
|
|
|
}
|
|
|
|
|
|
private void render() {
|
|
|
@@ -186,9 +240,7 @@ public class SettingCodePresenter extends Presenter<SettingCodeModel, ISettingCo
|
|
|
|
|
|
// 추천인 코드가 있으면 추천인 입력창 비활성
|
|
|
if (model.hasRecommendCodeRegistered()) {
|
|
|
- view.setRecommendString(model.getLoadedRecommendCode());
|
|
|
- view.setRecommendInputEnabled(false);
|
|
|
- view.setValidationRecommendCode(ResourceUtil.getString(R.string.recommend_code_only_one_time));
|
|
|
+ setLoadedRecommendCode();
|
|
|
}
|
|
|
else {
|
|
|
view.setRecommendInputEnabled(true);
|
|
|
@@ -242,11 +294,6 @@ public class SettingCodePresenter extends Presenter<SettingCodeModel, ISettingCo
|
|
|
view.setRegisteringButtonEnabled(false);
|
|
|
}
|
|
|
else {
|
|
|
- // 스페셜 코드 검증은 '등록' 버튼을 누를 때만 한다.
|
|
|
- if (model.verifySpecialCode() != Verifier.READY) {
|
|
|
- // 입력을 한 상태라면 등록 가능
|
|
|
- hasSpecialCode = true;
|
|
|
- }
|
|
|
if (hasSpecialCode || hasRecommendCode) {
|
|
|
view.setRegisteringButtonEnabled(true);
|
|
|
}
|
|
|
@@ -263,10 +310,11 @@ public class SettingCodePresenter extends Presenter<SettingCodeModel, ISettingCo
|
|
|
view.setValidationSpecialCode(ResourceUtil.getString(R.string.special_code_input));
|
|
|
}
|
|
|
else if (verifyResult == Verifier.FAIL_LESS || verifyResult == Verifier.FAIL_OVER) {
|
|
|
- if (isDisplayFailMessage) {
|
|
|
- view.setValidationSpecialCode(ResourceUtil.getString(R.string.special_code_input_need_12_characters));
|
|
|
- }
|
|
|
- else {
|
|
|
+// if (isDisplayFailMessage) {
|
|
|
+// view.setValidationSpecialCode(ResourceUtil.getString(R.string.special_code_input_need_12_characters));
|
|
|
+// }
|
|
|
+// else
|
|
|
+ {
|
|
|
view.setValidationSpecialCode(ResourceUtil.getString(R.string.empty_string));
|
|
|
}
|
|
|
}
|
|
|
@@ -290,10 +338,11 @@ 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) {
|
|
|
- if (isDisplayFailMessage) {
|
|
|
- view.setValidationRecommendCode(ResourceUtil.getString(R.string.recommend_code_input_need_5_characters));
|
|
|
- }
|
|
|
- else {
|
|
|
+// if (isDisplayFailMessage) {
|
|
|
+// view.setValidationRecommendCode(ResourceUtil.getString(R.string.recommend_code_input_need_5_characters));
|
|
|
+// }
|
|
|
+// else
|
|
|
+ {
|
|
|
view.setValidationRecommendCode(ResourceUtil.getString(R.string.empty_string));
|
|
|
}
|
|
|
}
|
|
|
@@ -346,5 +395,6 @@ public class SettingCodePresenter extends Presenter<SettingCodeModel, ISettingCo
|
|
|
|
|
|
@Override
|
|
|
public void onScreenReady() {
|
|
|
+ doubleChecker.checkFirst();
|
|
|
}
|
|
|
}
|