Просмотр исходного кода

[FAQ][New] 문의 등록 추가: 알림 받기 -> 설정과 연동

hyodong.min 7 лет назад
Родитель
Сommit
bc0693a938

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

@@ -27,6 +27,9 @@ public class LifeplusPreferences {
   public final static String ENCRYPTED_PIN = "encrypted_pin";
   public final static String TOKEN = "token";
   public final static String AUTO_UNLOCK = "auto_unlock";
+  public final static String PUSH_ENABLED = "push_enabled";
+  public final static String PUSH_MARKETING_ENABLED = "push_marketing_enabled";
+  public final static String LOCATION_SERVICE_ENABLED = "location_service_enabled";
 
 
   /**
@@ -157,4 +160,43 @@ public class LifeplusPreferences {
   public boolean isAutoUnlock() {
     return preferences.get(AUTO_UNLOCK, true);
   }
+
+  /**
+   * 푸시 알림 사용 여부
+   *
+   * @param isEnabled
+   */
+  public void setPushEnabled(boolean isEnabled) {
+    preferences.put(PUSH_ENABLED, isEnabled);
+  }
+
+  public boolean isPushEnabeld() {
+    return preferences.get(PUSH_ENABLED, false);
+  }
+
+  /**
+   * 푸시 마케팅 알림 사용 여부
+   *
+   * @param isEnabled
+   */
+  public void setPushMarketingEnabled(boolean isEnabled) {
+    preferences.put(PUSH_MARKETING_ENABLED, isEnabled);
+  }
+
+  public boolean isPushMarketingEnabeld() {
+    return preferences.get(PUSH_MARKETING_ENABLED, false);
+  }
+
+  /**
+   * 위치 서비스 사용 여부
+   *
+   * @param isEnabled
+   */
+  public void setLocationServiceEnabled(boolean isEnabled) {
+    preferences.put(LOCATION_SERVICE_ENABLED, isEnabled);
+  }
+
+  public boolean isLocationServiceEnabled() {
+    return preferences.get(LOCATION_SERVICE_ENABLED, false);
+  }
 }

+ 1 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/faq/FAQWriteFragment.java

@@ -66,6 +66,7 @@ public class FAQWriteFragment extends FragmentBase<FAQWritePresenter> implements
       설정의 알림 수신 과 연동 시킨다.
       off 일 경우에만 해당 레이아웃을 표시한다.
        */
+      presenter.onViewPushChecked(switchPushOnOff.isChecked());
     });
 
     viewRegistration.setOnClickListener(view -> {

+ 15 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/faq/FAQWriteModel.java

@@ -7,6 +7,7 @@ import io.reactivex.disposables.Disposable;
 import kr.co.zumo.app.lifeplus.bean.api.LifeplusAPIBean;
 import kr.co.zumo.app.lifeplus.bean.api.QuestionRequestBean;
 import kr.co.zumo.app.lifeplus.model.Model;
+import kr.co.zumo.app.lifeplus.model.SuperModel;
 import kr.co.zumo.app.lifeplus.model.module.APIQuestionRegisterModule;
 import kr.co.zumo.app.lifeplus.model.module.IAPIModuleListener;
 import kr.co.zumo.app.lifeplus.model.verify.Verifier;
@@ -192,4 +193,18 @@ public class FAQWriteModel extends Model {
     return result;
   }
 
+
+  /**
+   * 푸쉬 알림 설정
+   *
+   * @return
+   */
+  public boolean isPushEnabled() {
+    return SuperModel.getInstance().getPreferences().isPushEnabeld();
+  }
+
+  public void setPushEnabled(boolean isEnabled) {
+    SuperModel.getInstance().getPreferences().setPushEnabled(isEnabled);
+  }
+
 }

+ 28 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/faq/FAQWritePresenter.java

@@ -101,6 +101,14 @@ public class FAQWritePresenter extends Presenter<FAQWriteModel, IFAQWriteView> {
 
     setDeviceInfo();
     updateCurrentLength();
+
+    if (model.isPushEnabled()) {
+      view.setNoticeVisible(false);
+    }
+    else {
+      view.setNoticeVisible(true);
+      view.setNoticeChecked(false);
+    }
   }
 
   private void setDeviceInfo() {
@@ -109,10 +117,20 @@ public class FAQWritePresenter extends Presenter<FAQWriteModel, IFAQWriteView> {
     model.setDeviceInfo(info);
   }
 
+  /**
+   * 카테고리 선택
+   *
+   * @param index
+   */
   public void onViewCategoryChecked(int index) {
     model.setCategory(index);
   }
 
+  /**
+   * 문의 글 입력
+   *
+   * @param charSequence
+   */
   public void onViewInputContents(CharSequence charSequence) {
     // 유효성 검사
     String str = charSequence.toString();
@@ -123,6 +141,16 @@ public class FAQWritePresenter extends Presenter<FAQWriteModel, IFAQWriteView> {
     updateCurrentLength();
   }
 
+  /**
+   * 푸쉬 동의 선택
+   *
+   * @param checked
+   */
+  public void onViewPushChecked(boolean checked) {
+    model.setPushEnabled(checked);
+    // todo 푸쉬 관련 api 연동 필요 할 수 있음.
+  }
+
   private void updateCurrentLength() {
     // 글자 수 갱신
     view.setTypeLength(String.valueOf(model.getContents().length()));

+ 43 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/setting/SettingModel.java

@@ -134,6 +134,9 @@ public class SettingModel extends Model {
       @Override
       public void onApiSuccess(SettingResultBean resultBean) {
         settingBean = resultBean.getData();
+        setPushEnabled(settingBean.isAllowPush());
+        setPushMarketingEnabled(settingBean.isAllowPushMarketing());
+        setLocationServiceEnabled(settingBean.isAllowLocationService());
 
         onResult(new Event.Builder(Event.RESULT).integer(Event.SETTING_LOAD).build());
       }
@@ -204,7 +207,47 @@ public class SettingModel extends Model {
   public boolean isAutoUnlock() {
     return SuperModel.getInstance().getPreferences().isAutoUnlock();
   }
+
   public void setAutoUnlock(boolean isEnabled) {
     SuperModel.getInstance().getPreferences().setAutoUnlock(isEnabled);
   }
+
+  /**
+   * 푸쉬 알림 설정
+   *
+   * @return
+   */
+  public boolean isPushEnabled() {
+    return SuperModel.getInstance().getPreferences().isPushEnabeld();
+  }
+
+  public void setPushEnabled(boolean isEnabled) {
+    SuperModel.getInstance().getPreferences().setPushEnabled(isEnabled);
+  }
+
+  /**
+   * 푸쉬 마케팅 알림 설정
+   *
+   * @return
+   */
+  public boolean isPushMarketingEnabled() {
+    return SuperModel.getInstance().getPreferences().isPushMarketingEnabeld();
+  }
+
+  public void setPushMarketingEnabled(boolean isEnabled) {
+    SuperModel.getInstance().getPreferences().setPushMarketingEnabled(isEnabled);
+  }
+
+  /**
+   * 위치 서비스 설정
+   *
+   * @return
+   */
+  public boolean isLocationServiceEnabled() {
+    return SuperModel.getInstance().getPreferences().isLocationServiceEnabled();
+  }
+
+  public void setLocationServiceEnabled(boolean isEnabled) {
+    SuperModel.getInstance().getPreferences().setLocationServiceEnabled(isEnabled);
+  }
 }

+ 3 - 3
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/setting/SettingPresenter.java

@@ -126,15 +126,15 @@ public class SettingPresenter extends Presenter<SettingModel, ISettingView> {
           // push / 위치 설정
           if (str.equals(SettingViewHolder.SWITCH_PUSH)) {
             // 푸쉬
-
+            model.setPushEnabled(bool);
           }
           else if (str.equals(SettingViewHolder.SWITCH_MARKETING)) {
             // 마케팅
-
+            model.setPushMarketingEnabled(bool);
           }
           else if (str.equals(SettingViewHolder.SWITCH_LOCATION)) {
             // 위치
-
+            model.setLocationServiceEnabled(bool);
           }
         }
         break;

+ 1 - 1
app/src/main/res/layout/fragment_my_faq_write.xml

@@ -110,7 +110,7 @@
         android:inputType="textMultiLine"
         android:lineSpacingExtra="6sp"
         android:maxLength="2000"
-        android:minHeight="214dp"
+        android:minHeight="100dp"
         android:padding="13dp"
         android:textSize="14sp"
         />