|
|
@@ -16,16 +16,23 @@ import io.reactivex.disposables.CompositeDisposable;
|
|
|
import io.reactivex.schedulers.Schedulers;
|
|
|
import kr.co.zumo.app.R;
|
|
|
import kr.co.zumo.app.lifeplus.application.App;
|
|
|
+import kr.co.zumo.app.lifeplus.bean.api.EmergencyBean;
|
|
|
import kr.co.zumo.app.lifeplus.config.NetworkConfigProvider;
|
|
|
import kr.co.zumo.app.lifeplus.helper.AppShieldHelper;
|
|
|
+import kr.co.zumo.app.lifeplus.helper.AppVersionHelper;
|
|
|
import kr.co.zumo.app.lifeplus.helper.FirebaseHelper;
|
|
|
import kr.co.zumo.app.lifeplus.model.SuperModel;
|
|
|
import kr.co.zumo.app.lifeplus.model.SuperModelInit;
|
|
|
+import kr.co.zumo.app.lifeplus.model.module.APIModuleHelper;
|
|
|
+import kr.co.zumo.app.lifeplus.model.module.IEmergency;
|
|
|
+import kr.co.zumo.app.lifeplus.model.module.IModuleEmergencyHandler;
|
|
|
import kr.co.zumo.app.lifeplus.network.NetworkWatcher;
|
|
|
+import kr.co.zumo.app.lifeplus.util.ResourceUtil;
|
|
|
import kr.co.zumo.app.lifeplus.view.Event;
|
|
|
import kr.co.zumo.app.lifeplus.view.dialog.ConfirmDialog;
|
|
|
import kr.co.zumo.app.lifeplus.view.dialog.DialogBuilder;
|
|
|
import kr.co.zumo.app.lifeplus.view.dialog.DialogID;
|
|
|
+import kr.co.zumo.app.lifeplus.view.dialog.DialogProvider;
|
|
|
import kr.co.zumo.app.lifeplus.view.dialog.ICustomConfirmListener;
|
|
|
|
|
|
/**
|
|
|
@@ -38,7 +45,7 @@ import kr.co.zumo.app.lifeplus.view.dialog.ICustomConfirmListener;
|
|
|
* @history 민효동 [2019. 2. 20.] [최초 작성]
|
|
|
* @since 2019. 2. 20.
|
|
|
*/
|
|
|
-public class SplashPresenter implements ISplashContract.Presenter {
|
|
|
+public class SplashPresenter implements ISplashContract.Presenter, IModuleEmergencyHandler {
|
|
|
|
|
|
private ISplashContract.Model model;
|
|
|
private ISplashContract.View view;
|
|
|
@@ -51,6 +58,8 @@ public class SplashPresenter implements ISplashContract.Presenter {
|
|
|
SplashPresenter(ISplashContract.Model model, ISplashContract.View view) {
|
|
|
this.model = model;
|
|
|
this.view = view;
|
|
|
+
|
|
|
+ APIModuleHelper.setEmergencyHandler(this);
|
|
|
}
|
|
|
|
|
|
private void launchLocationPermission(Runnable runnable) {
|
|
|
@@ -224,6 +233,7 @@ public class SplashPresenter implements ISplashContract.Presenter {
|
|
|
starter = new ScreenStarter(view.getActivity());
|
|
|
|
|
|
AppShieldHelper.getInstance().checkApp(context);
|
|
|
+ AppVersionHelper.getInstance().fetch(view.getActivity());
|
|
|
|
|
|
// 네트워크 연결 체크
|
|
|
disposable.add(
|
|
|
@@ -248,4 +258,50 @@ public class SplashPresenter implements ISplashContract.Presenter {
|
|
|
);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ private void showPopupMultiDevice() {
|
|
|
+ DialogProvider.of(view.getActivity().getSupportFragmentManager()).showPopupMultiDevice(() -> {
|
|
|
+ // 잠금 화면으로 이동
|
|
|
+ dispose();
|
|
|
+ view.linkActivity(ScreenStarter.SCREEN_MULTI_DEVICE);
|
|
|
+ }, () -> {
|
|
|
+ // 앱 종료
|
|
|
+ exit();
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ private void showPopupInvalidApp() {
|
|
|
+ Log.d("APP# ScreenStarter | showPopupInvalidApp", "|" + " ---------- ");
|
|
|
+ DialogProvider.of(view.getActivity().getSupportFragmentManager()).showErrorDialog(ResourceUtil.getString(R.string.emergency_invalid_app), () -> {
|
|
|
+ // 앱 종료
|
|
|
+ exit();
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ protected void exit() {
|
|
|
+ view.getActivity().finishAffinity();
|
|
|
+ AppInitializer.dispose();
|
|
|
+ }
|
|
|
+
|
|
|
+ /***********************************
|
|
|
+ * IModuleEmergencyHandler
|
|
|
+ ***********************************/
|
|
|
+ @Override
|
|
|
+ public boolean onApiEmergency(IEmergency emergency) {
|
|
|
+ /*
|
|
|
+ 멀티 디바이스 사용 등의 경우 api 호출 시 특정 값을 반환하므로 이를 처리한다.
|
|
|
+ */
|
|
|
+ if (emergency.getEmergencyCode() == EmergencyBean.CODE_MULTI_DEVICE) {
|
|
|
+ // 멀티 디바이스
|
|
|
+ showPopupMultiDevice();
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ else if (emergency.getEmergencyCode() == EmergencyBean.CODE_INVALID_APP) {
|
|
|
+ // 미인증 앱
|
|
|
+ showPopupInvalidApp();
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ return false;
|
|
|
+ }
|
|
|
}
|