Explorar el Código

[공통][Common] SuperModel 메서드 추가

hyodong.min hace 7 años
padre
commit
270d5d38a9

+ 21 - 14
app/src/main/java/kr/co/zumo/app/lifeplus/activity/SplashActivity.java

@@ -5,7 +5,6 @@ import android.content.Context;
 import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.os.Bundle;
-import android.preference.PreferenceManager;
 import android.support.annotation.NonNull;
 import android.support.v4.app.ActivityCompat;
 import android.support.v7.app.AppCompatActivity;
@@ -14,18 +13,18 @@ import android.util.Log;
 import io.reactivex.disposables.CompositeDisposable;
 import kr.co.zumo.app.R;
 import kr.co.zumo.app.lifeplus.application.App;
-import kr.co.zumo.app.lifeplus.model.BaseSharedPreferences;
 import kr.co.zumo.app.lifeplus.model.LifeplusPreferences;
 import kr.co.zumo.app.lifeplus.model.SuperModel;
+import kr.co.zumo.app.lifeplus.model.SuperModelInit;
 import kr.co.zumo.app.lifeplus.network.NetworkWatcher;
 import kr.co.zumo.app.lifeplus.util.AppUtil;
 import kr.co.zumo.app.lifeplus.util.PermissionUtil;
 import kr.co.zumo.app.lifeplus.util.StringUtil;
 
 /**
- * Splash 화면 구현 테스트
+ * Splash 화면
  * <pre>
- * Splash 화면 구현 테스트, manifests에서 설정한 Theme로 splash 화면이 구성된다.
+ * Splash 화면, manifests 에서 설정한 Theme 로 splash 화면이 구성된다.
  * </pre>
  *
  * @author 하세미
@@ -41,10 +40,10 @@ public class SplashActivity extends AppCompatActivity {
     super.onCreate(savedInstanceState);
 
     Context context = App.getInstance().getContext();
-    SuperModel.getInstance().init(new LifeplusPreferences(new BaseSharedPreferences(PreferenceManager.getDefaultSharedPreferences(context))));
+    SuperModelInit.init(context);
 
     if (AppUtil.isRelease()) {
-      disposable.add(NetworkWatcher.check(App.getInstance().getContext()).subscribe(isConnected -> {
+      disposable.add(NetworkWatcher.check(context).subscribe(isConnected -> {
           disposable.dispose();
 
           launch(isConnected);
@@ -58,6 +57,7 @@ public class SplashActivity extends AppCompatActivity {
 
   private void launch(Boolean isConnected) {
     Log.i("APP# SplashActivity | onCreate", "| Network Connected ==============================================================> " + isConnected);
+    LifeplusPreferences preferences = SuperModel.getInstance().getPreferences();
     Intent intent;
     intent = new Intent(this, MainActivity.class);
     if (isConnected == false) {
@@ -66,15 +66,21 @@ public class SplashActivity extends AppCompatActivity {
     else if (false) {
       // todo 앱 권한 안내 표시, 표시 후 권한 요청;
     }
-    else if (SuperModel.getInstance().getPreferences().getTutorialDone() == false) {
+    else if (preferences.isTutorialDone() == false) {
       intent = new Intent(this, TutorialActivity.class);
     }
-    else if (SuperModel.getInstance().getPreferences().getEncryptionUserNo().equals("") == false) {
-      // todo 앱 업데이트 한 사람일 경우
-      intent = new Intent(this, SignUpActivity.class);
-    }
-    else if (false) {
-      // todo 비회원일 경우
+    else if (StringUtil.isFull(SuperModel.getInstance().getUserId()) == false) {
+      // todo 가입 안했음
+      // 처음 사용자와 업데이트 사용자 구분
+
+      // 업데이트 사용자
+      if (StringUtil.isFull(preferences.getEncryptionUserNo())) {
+        // todo 앱 업데이트 한 사람일 경우
+        intent = new Intent(this, SignUpActivity.class);
+      }
+      else { // 처음 사용자
+        intent = new Intent(this, SignUpActivity.class);
+      }
     }
 
     try {
@@ -103,6 +109,7 @@ public class SplashActivity extends AppCompatActivity {
       // 현재 장치 값과 저장된 값이 같은지 검증;
       if (uuid.equals(currentUuid)) {
         // 이상 없음
+        Log.w("APP# SplashActivity | verifyUuid", "|" + "이상 없음");
       }
       else {
         Log.e("APP#  SplashActivity | verifyUuid", "| " + "uuid 가 변경됨");
@@ -111,13 +118,13 @@ public class SplashActivity extends AppCompatActivity {
     }
     else {
       // 저장돼있지 않으면 처음이므로 저장;
+      Log.w("APP# SplashActivity | verifyUuid", "|" + "저장돼있지 않으면 처음이므로 저장");
       setUuid(currentUuid);
     }
   }
 
   protected void setUuid(String uuid) {
     Log.w("APP# SplashActivity | setUuid", "| " + uuid);
-    SuperModel.getInstance().getPreferences().setDeviceUuid(uuid);
     SuperModel.getInstance().setUuid(uuid);
   }
 

+ 14 - 17
app/src/main/java/kr/co/zumo/app/lifeplus/model/LifeplusPreferences.java

@@ -19,22 +19,19 @@ public class LifeplusPreferences {
   private BaseSharedPreferences preferences;
 
   public final static String ENCRYPTION_USER_NO = "encryption_user_no";
-  //  public final static String ENCRYPTED_PIN = "encrypted_pin";
+  public final static String USER_ID = "user_id";
   public final static String TUTORIAL_DONE = "tutorial_done";
   public final static String DEVICE_UUID = "device_uuid";
 
-
-  public LifeplusPreferences(BaseSharedPreferences preferences) {
-    setPreferences(preferences);
-  }
-
   /**
    * 기본 SharedPreferences 를 전달 받는다.
    * 별도로 dispose 할 필요는 없다.
    *
+   * - model 을 통해서만 접근할 수 있도록 package-private 으로 설정
+   *
    * @param preferences BaseSharedPreferences
    */
-  public void setPreferences(BaseSharedPreferences preferences) {
+  LifeplusPreferences(BaseSharedPreferences preferences) {
     this.preferences = preferences;
   }
 
@@ -53,7 +50,7 @@ public class LifeplusPreferences {
     preferences.put(TUTORIAL_DONE, true);
   }
 
-  public boolean getTutorialDone() {
+  public boolean isTutorialDone() {
     return preferences.get(TUTORIAL_DONE, false);
   }
 
@@ -69,15 +66,15 @@ public class LifeplusPreferences {
   }
 
   /**
-   * 간편 비밀 번호
+   * 유저 아이디
    *
-   * @param pin
+   * @param id
    */
-//  public void setEncryptedPin(String pin) {
-//    preferences.put(ENCRYPTED_PIN, pin);
-//  }
-//
-//  public String getEncryptionPin() {
-//    return preferences.get(ENCRYPTED_PIN, "");
-//  }
+  public void setUserId(String id) {
+    preferences.put(USER_ID, id);
+  }
+
+  public String getUserId() {
+    return preferences.get(USER_ID, "");
+  }
 }

+ 3 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/model/PinModel.java

@@ -58,7 +58,9 @@ public class PinModel extends Model {
    * @return single with LifeplusAuthBean
    */
   public Single<LifeplusAuthBean> verifyPin(String uuid, String pin) {
-    return LifeplusAPIService.authorize(uuid, pin)
+    // todo pin 암호화 처리 필요
+    String encryptedPin = pin;
+    return LifeplusAPIService.verifyPin(uuid, encryptedPin)
       .observeOn(AndroidSchedulers.mainThread());
   }
 

+ 10 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/model/SignUpModel.java

@@ -14,6 +14,16 @@ package kr.co.zumo.app.lifeplus.model;
  * @since 2018. 9. 21.
  */
 public class SignUpModel extends Model {
+
+  /**
+   * 가입 후 유저 아이디를 프리퍼런스에 저장한다.
+   *
+   * @param userId userId
+   */
+  public void saveUserId(String userId) {
+    SuperModel.getInstance().setUserId(userId);
+  }
+
   @Override
   public void dispose() {
 

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

@@ -3,6 +3,8 @@
  */
 package kr.co.zumo.app.lifeplus.model;
 
+import kr.co.zumo.app.lifeplus.util.StringUtil;
+
 /**
  * 앱에 필요한 전반적인 데이터 저장
  * <pre>
@@ -21,6 +23,7 @@ public final class SuperModel {
   }
 
   private String Uuid;
+  private String UserId;
   private LifeplusPreferences preferences;
 
   private SuperModel() {
@@ -43,9 +46,12 @@ public final class SuperModel {
    * 저장된 장치 고유번호 반환
    * - 프리퍼런스에 저장되어있지만 편의를 위해 모델에도 저장해둠
    *
-   * @return
+   * @return uuid
    */
   public String getUuid() {
+    if (StringUtil.isFull(Uuid) == false) {
+      Uuid = preferences.getDeviceUuid();
+    }
     return Uuid;
   }
 
@@ -56,6 +62,25 @@ public final class SuperModel {
    */
   public void setUuid(String uuid) {
     Uuid = uuid;
+    preferences.setDeviceUuid(uuid);
+  }
+
+  /**
+   * 저장된 장치 User ID 반환
+   * - 프리퍼런스에 저장되어있지만 편의를 위해 모델에도 저장해둠
+   *
+   * @return user id
+   */
+  public String getUserId() {
+    if (StringUtil.isFull(UserId) == false) {
+      UserId = preferences.getUserId();
+    }
+    return UserId;
+  }
+
+  public void setUserId(String userId) {
+    UserId = userId;
+    preferences.setUserId(userId);
   }
 
   /**

+ 29 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/model/SuperModelInit.java

@@ -0,0 +1,29 @@
+/*
+ * COPYRIGHT (c) 2018 All rights reserved by HANWHA LIFE.
+ */
+package kr.co.zumo.app.lifeplus.model;
+
+import android.content.Context;
+import android.preference.PreferenceManager;
+
+/**
+ * SuperModelInit
+ * <pre>
+ * </pre>
+ *
+ * @author 민효동
+ * @version 1.0
+ * @history 민효동   [2018-09-23]   [최초 작성]
+ * @since 2018-09-23
+ */
+public class SuperModelInit {
+  /**
+   * LifeplusPreferences 생성자를 package-private 으로 설정하여 패키지 외부에서 SuperModel 을 init 할 수 없다.
+   * 외부에서 접근하도록 감싸준다.
+   *
+   * @param context ApplicationContext
+   */
+  public static void init(Context context) {
+    SuperModel.getInstance().init(new LifeplusPreferences(new BaseSharedPreferences(PreferenceManager.getDefaultSharedPreferences(context))));
+  }
+}