|
|
@@ -52,454 +52,448 @@ import kr.co.zumo.app.lifeplus.view.screen.my.bucketlist.BucketListManager;
|
|
|
*/
|
|
|
public abstract class Model extends ViewModel implements ILifeCycle, IHelperProvider {
|
|
|
|
|
|
- private IModelResult listener;
|
|
|
- private IHelperProvider helperProvider;
|
|
|
- private Disposable networkDisposable;
|
|
|
- private Disposable retryDisposable;
|
|
|
- private INetworkReceiverListener networkListener;
|
|
|
- protected IWaiterCallable waiterCaller;
|
|
|
- private Disposable disposableBucket;
|
|
|
- private Disposable disposableBookMarkList;
|
|
|
- private Disposable disposableNoti;
|
|
|
- private int screenId;
|
|
|
- private int prevScreenId;
|
|
|
-
|
|
|
- public Model() {
|
|
|
- Log.w("APP# Model | constructor", "| >>>>>>>>>>>> " + this.getClass().getSimpleName());
|
|
|
- }
|
|
|
-
|
|
|
- /***********************************
|
|
|
- * own
|
|
|
- ***********************************/
|
|
|
-
|
|
|
- /**
|
|
|
- * 네트워크의 연결 상태를 감시한다.
|
|
|
- * 변동이 있을 때 presenter 로 알려준다.
|
|
|
- */
|
|
|
- protected void watchNetwork() {
|
|
|
- Log.w("APP# Model | watchNetwork", "| " + this.getClass().getSimpleName() + " - Start network watching............");
|
|
|
- networkDisposable =
|
|
|
- new NetworkWatcher().watch(App.getInstance().getContext())
|
|
|
- .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
|
|
|
- .subscribe(isConnectedAll -> {
|
|
|
- Log.i("APP# Model | watchNetwork", "|" + "isConnectedAll: +++++++++" + isConnectedAll);
|
|
|
- if (null != networkListener) {
|
|
|
- networkListener.onChangedConnection(isConnectedAll, 0);
|
|
|
- }
|
|
|
- }, e -> {
|
|
|
- Log.i("APP# Model | watchNetwork", "|" + "isConnectedAll: ++++++++++" + "error ");
|
|
|
- if (null != networkListener) {
|
|
|
- networkListener.onChangedConnection(false, 0);
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
- protected void stopNetworkWatching() {
|
|
|
- Log.w("APP# Model | stopNetworkWatching", "| " + this.getClass().getSimpleName() + " - Stop network watching___________");
|
|
|
- if (null != networkDisposable) {
|
|
|
- networkDisposable.dispose();
|
|
|
- networkDisposable = null;
|
|
|
- }
|
|
|
-
|
|
|
- if (null != retryDisposable) {
|
|
|
- retryDisposable.dispose();
|
|
|
- retryDisposable = null;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- protected void onResult(Event event) {
|
|
|
- try {
|
|
|
- listener.onResult(event);
|
|
|
- } catch (Exception e) {
|
|
|
- //e.printStackTrace();
|
|
|
- Log.e("APP# Model | onResult", "Log.getStackTraceString(e) |" + Log.getStackTraceString(e));
|
|
|
- FinalAlert.create(new Event.Builder(Event.ERROR).string(e.getLocalizedMessage()).build());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 네트워크 연결 확인.
|
|
|
- */
|
|
|
- public void checkNetwork() {
|
|
|
- retryDisposable = new NetworkWatcher().check(App.getInstance().getContext())
|
|
|
- .delay(300, TimeUnit.MILLISECONDS) // ui 를 표시하기위한 딜레이 추가
|
|
|
- .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
|
|
|
- .subscribe(isConnected -> {
|
|
|
- Log.i("APP# Model | checkNetwork", "| isConnected: " + isConnected);
|
|
|
- if (null != networkListener) {
|
|
|
- networkListener.onChangedConnection(isConnected, 0);
|
|
|
+ private IModelResult listener;
|
|
|
+ private IHelperProvider helperProvider;
|
|
|
+ private Disposable networkDisposable;
|
|
|
+ private Disposable retryDisposable;
|
|
|
+ private INetworkReceiverListener networkListener;
|
|
|
+ protected IWaiterCallable waiterCaller;
|
|
|
+ private Disposable disposableBucket;
|
|
|
+ private Disposable disposableBookMarkList;
|
|
|
+ private Disposable disposableNoti;
|
|
|
+ private int screenId;
|
|
|
+ private int prevScreenId;
|
|
|
+
|
|
|
+ public Model() {
|
|
|
+ Log.w("APP# Model | constructor", "| >>>>>>>>>>>> " + this.getClass().getSimpleName());
|
|
|
+ }
|
|
|
+
|
|
|
+ /***********************************
|
|
|
+ * own
|
|
|
+ ***********************************/
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 네트워크의 연결 상태를 감시한다.
|
|
|
+ * 변동이 있을 때 presenter 로 알려준다.
|
|
|
+ */
|
|
|
+ protected void watchNetwork() {
|
|
|
+ Log.w("APP# Model | watchNetwork", "| " + this.getClass().getSimpleName() + " - Start network watching............");
|
|
|
+ networkDisposable =
|
|
|
+ new NetworkWatcher().watch(App.getInstance().getContext())
|
|
|
+ .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
|
|
|
+ .subscribe(isConnectedAll -> {
|
|
|
+ Log.i("APP# Model | watchNetwork", "|" + "isConnectedAll: +++++++++" + isConnectedAll);
|
|
|
+ if (null != networkListener) {
|
|
|
+ networkListener.onChangedConnection(isConnectedAll, 0);
|
|
|
+ }
|
|
|
+ }, e -> {
|
|
|
+ Log.i("APP# Model | watchNetwork", "|" + "isConnectedAll: ++++++++++" + "error ");
|
|
|
+ if (null != networkListener) {
|
|
|
+ networkListener.onChangedConnection(false, 0);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ protected void stopNetworkWatching() {
|
|
|
+ Log.w("APP# Model | stopNetworkWatching", "| " + this.getClass().getSimpleName() + " - Stop network watching___________");
|
|
|
+ if (null != networkDisposable) {
|
|
|
+ networkDisposable.dispose();
|
|
|
+ networkDisposable = null;
|
|
|
}
|
|
|
- }, Throwable::printStackTrace);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * Model 로 부터 결과 값을 전달 받을 수 있는 interface 객체
|
|
|
- *
|
|
|
- * @return IModelResult
|
|
|
- */
|
|
|
- public IModelResult getListener() {
|
|
|
- return listener;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * Model 로 부터 결과 값을 전달 받을 객체 지정
|
|
|
- *
|
|
|
- * @param listener IModelResult
|
|
|
- */
|
|
|
- public void setListener(IModelResult listener) {
|
|
|
- this.listener = listener;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * Preferences 반환
|
|
|
- *
|
|
|
- * @return LifeplusPreferences
|
|
|
- */
|
|
|
- public LifeplusPreferences getPreferences() {
|
|
|
- return SuperModel.getInstance().getPreferences();
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * is update from zumo?
|
|
|
- *
|
|
|
- * @return
|
|
|
- */
|
|
|
- public boolean isUpdateUser() {
|
|
|
- LifeplusPreferences preferences = getPreferences();
|
|
|
-
|
|
|
- //TODO: 기존 주모 업데이트 유저는 해당 유저넘버 유지하여 자동 로그인
|
|
|
-// SuperModel.getInstance().setUserNo(preferences.getZumoUserNo());
|
|
|
-
|
|
|
- return StringUtil.isFull(preferences.getZumoUserNo()) && preferences.isZumoUserUpdateCompleted() == false;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 멤버/게스트 확인
|
|
|
- * - 블럭/휴면 계정도 비회원으로 처리됨.
|
|
|
- *
|
|
|
- * @return
|
|
|
- */
|
|
|
- public boolean isActiveMember() {
|
|
|
- return SuperModel.getInstance().isActiveMember();
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 회원 가입했는지 확인
|
|
|
- *
|
|
|
- * @return
|
|
|
- */
|
|
|
- public boolean isJoined() {
|
|
|
- return SuperModel.getInstance().isJoined();
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * User ID (userNo)
|
|
|
- *
|
|
|
- * @return
|
|
|
- */
|
|
|
- public final String getUserNo() {
|
|
|
- return SuperModel.getInstance().getUserNo();
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * User Name
|
|
|
- *
|
|
|
- * @return
|
|
|
- */
|
|
|
- public final String getUserName() {
|
|
|
- return SuperModel.getInstance().getUserName();
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * User Email
|
|
|
- *
|
|
|
- * @return
|
|
|
- */
|
|
|
- public String getUserEmail() {
|
|
|
- return SuperModel.getInstance().getUserEmail();
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 네트워크 상태를 체크할 리스너 등록
|
|
|
- *
|
|
|
- * @param networkListener
|
|
|
- */
|
|
|
- public void setNetworkListener(INetworkReceiverListener networkListener) {
|
|
|
- this.networkListener = networkListener;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * Helper 제공자를 설정한다.
|
|
|
- *
|
|
|
- * @param helperProvider
|
|
|
- */
|
|
|
- public void setHelperProvider(IHelperProvider helperProvider) {
|
|
|
- this.helperProvider = helperProvider;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * Waiter(Loading) 을 호출해줄 객체 지정
|
|
|
- *
|
|
|
- * @param waiterCaller
|
|
|
- */
|
|
|
- public void setWaiterCaller(IWaiterCallable waiterCaller) {
|
|
|
- this.waiterCaller = waiterCaller;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public <H extends Helper> H getHelper(Class<H> helperClass) {
|
|
|
- return helperProvider.getHelper(helperClass);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 다음 화면(Fragment)으로 전달 할 데이터를 등록한다.
|
|
|
- *
|
|
|
- * @param packaging
|
|
|
- */
|
|
|
- public void setDeliveryPackaging(Object packaging) {
|
|
|
- getHelper(DeliveryHelper.class).setPackaging(packaging);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 다음 화면(Fragment)으로 전달 할 데이터를 반환 @Nullable
|
|
|
- *
|
|
|
- * @param nameClass
|
|
|
- * @return
|
|
|
- */
|
|
|
- @Nullable
|
|
|
- public <T> T getDeliveryPackaging(Class<T> nameClass) {
|
|
|
- return getHelper(DeliveryHelper.class).getPackaging(nameClass);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * DeliveryHelper clearPackagingInternal()
|
|
|
- */
|
|
|
- public void clearDeliveryPackaging() {
|
|
|
- getHelper(DeliveryHelper.class).clearPackaging();
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 이전 화면(상위)에서 되돌아온 결과 데이터 등록
|
|
|
- *
|
|
|
- * @param packaging
|
|
|
- */
|
|
|
- public void setResultPackaging(Object packaging) {
|
|
|
- Log.e("APP# Model | setResultPackaging", "|" + " =============> " + packaging);
|
|
|
- getHelper(DeliveryResultHelper.class).setPackaging(packaging);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 이전 화면(상위)에서 되돌아온 결과 데이터 반환
|
|
|
- *
|
|
|
- * @param nameClass
|
|
|
- * @param <T>
|
|
|
- * @return
|
|
|
- */
|
|
|
- @Nullable
|
|
|
- public <T> T getResultPackaging(Class<T> nameClass) {
|
|
|
- return getHelper(DeliveryResultHelper.class).getPackaging(nameClass);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 이전 화면(상위)에서 되돌아온 결과 데이터 clear
|
|
|
- */
|
|
|
- public void clearResultPackaging() {
|
|
|
- getHelper(DeliveryResultHelper.class).clearPackaging();
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 버킷 리스트 수를 파악한다.
|
|
|
- *
|
|
|
- * @param listener
|
|
|
- */
|
|
|
- public void loadMyBucketCount(IEventListener listener) {
|
|
|
- disposableBucket = BucketListManager.getInstance().loadMyBucketList(
|
|
|
- new BucketListRequestBean(1, 1000, ""),
|
|
|
- new APIModuleListener<BucketListResultBean>(waiterCaller) {
|
|
|
- @Override
|
|
|
- public void onApiSuccess(BucketListResultBean resultBean) {
|
|
|
- listener.onEvent(new Event.Builder(Event.RESULT).integer(BucketListManager.getInstance().getBucketCount()).build());
|
|
|
+
|
|
|
+ if (null != retryDisposable) {
|
|
|
+ retryDisposable.dispose();
|
|
|
+ retryDisposable = null;
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
- @Override
|
|
|
- public void onApiError(String errorMessage, APIError error) {
|
|
|
- listener.onEvent(new Event.Builder(Event.RESULT).integer(0).build());
|
|
|
+ protected void onResult(Event event) {
|
|
|
+ try {
|
|
|
+ listener.onResult(event);
|
|
|
+ } catch (Exception e) {
|
|
|
+ //e.printStackTrace();
|
|
|
+ Log.e("APP# Model | onResult", "Log.getStackTraceString(e) |" + Log.getStackTraceString(e));
|
|
|
+ FinalAlert.create(new Event.Builder(Event.ERROR).string(e.getLocalizedMessage()).build());
|
|
|
}
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 북마크 수를 파악
|
|
|
- *
|
|
|
- * @param listener
|
|
|
- */
|
|
|
- public void loadMyBookMarkCount(IEventListener listener) {
|
|
|
- disposableBookMarkList = BookmarkManager.getInstance().loadMyBookmark(new PageRequestBean(), new APIModuleListener<BookmarkListResultBean>(waiterCaller) {
|
|
|
- @Override
|
|
|
- public void onApiSuccess(BookmarkListResultBean resultBean) {
|
|
|
- listener.onEvent(new Event.Builder(Event.RESULT).integer(BookmarkManager.getInstance().getCountOfBookmark()).build());
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void onApiError(String errorMessage, APIError error) {
|
|
|
- listener.onEvent(new Event.Builder(Event.RESULT).integer(0).build());
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 최신 알림이 있는지 파악
|
|
|
- *
|
|
|
- * @param listener
|
|
|
- */
|
|
|
- public void loadNotiLatest(IEventListener listener) {
|
|
|
- disposableNoti =
|
|
|
- new APINoticeModule().call(new RequestBean(), new APIModuleListener<NoticeResultBean>(waiterCaller) {
|
|
|
- @Override
|
|
|
- public void onApiSuccess(NoticeResultBean resultBean) {
|
|
|
- List<NoticeBean> noticeBeans = resultBean.getData();
|
|
|
-
|
|
|
- if (null != noticeBeans && noticeBeans.size() > 0) {
|
|
|
- // 마지막 시간과 비교해서 다르면 뉴 표시
|
|
|
-
|
|
|
- Log.d("APP# Model | onApiSuccess, 369", "|" + noticeBeans.get(0).getOpeningDate());
|
|
|
- if (SuperModel.getInstance().getPreferences().getNotiLatestTime().equals(noticeBeans.get(0).getOpeningDate())) {
|
|
|
- // 새 알림 없음.
|
|
|
- listener.onEvent(new Event.Builder(Event.SUCCESS).bool(false).build());
|
|
|
- }
|
|
|
- else {
|
|
|
- // 새 알림 있음.
|
|
|
- listener.onEvent(new Event.Builder(Event.SUCCESS).bool(true).build());
|
|
|
- }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 네트워크 연결 확인.
|
|
|
+ */
|
|
|
+ public void checkNetwork() {
|
|
|
+ retryDisposable = new NetworkWatcher().check(App.getInstance().getContext())
|
|
|
+ .delay(300, TimeUnit.MILLISECONDS) // ui 를 표시하기위한 딜레이 추가
|
|
|
+ .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
|
|
|
+ .subscribe(isConnected -> {
|
|
|
+ Log.i("APP# Model | checkNetwork", "| isConnected: " + isConnected);
|
|
|
+ if (null != networkListener) {
|
|
|
+ networkListener.onChangedConnection(isConnected, 0);
|
|
|
+ }
|
|
|
+ }, Throwable::printStackTrace);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Model 로 부터 결과 값을 전달 받을 수 있는 interface 객체
|
|
|
+ *
|
|
|
+ * @return IModelResult
|
|
|
+ */
|
|
|
+ public IModelResult getListener() {
|
|
|
+ return listener;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Model 로 부터 결과 값을 전달 받을 객체 지정
|
|
|
+ *
|
|
|
+ * @param listener IModelResult
|
|
|
+ */
|
|
|
+ public void setListener(IModelResult listener) {
|
|
|
+ this.listener = listener;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Preferences 반환
|
|
|
+ *
|
|
|
+ * @return LifeplusPreferences
|
|
|
+ */
|
|
|
+ public LifeplusPreferences getPreferences() {
|
|
|
+ return SuperModel.getInstance().getPreferences();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * is update from zumo?
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public boolean isUpdateUser() {
|
|
|
+ LifeplusPreferences preferences = getPreferences();
|
|
|
+ return StringUtil.isFull(preferences.getZumoUserNo()) && preferences.isZumoUserUpdateCompleted() == false;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 멤버/게스트 확인
|
|
|
+ * - 블럭/휴면 계정도 비회원으로 처리됨.
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public boolean isActiveMember() {
|
|
|
+ return SuperModel.getInstance().isActiveMember();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 회원 가입했는지 확인
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public boolean isJoined() {
|
|
|
+ return SuperModel.getInstance().isJoined();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * User ID (userNo)
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public final String getUserNo() {
|
|
|
+ return SuperModel.getInstance().getUserNo();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * User Name
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public final String getUserName() {
|
|
|
+ return SuperModel.getInstance().getUserName();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * User Email
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public String getUserEmail() {
|
|
|
+ return SuperModel.getInstance().getUserEmail();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 네트워크 상태를 체크할 리스너 등록
|
|
|
+ *
|
|
|
+ * @param networkListener
|
|
|
+ */
|
|
|
+ public void setNetworkListener(INetworkReceiverListener networkListener) {
|
|
|
+ this.networkListener = networkListener;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Helper 제공자를 설정한다.
|
|
|
+ *
|
|
|
+ * @param helperProvider
|
|
|
+ */
|
|
|
+ public void setHelperProvider(IHelperProvider helperProvider) {
|
|
|
+ this.helperProvider = helperProvider;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Waiter(Loading) 을 호출해줄 객체 지정
|
|
|
+ *
|
|
|
+ * @param waiterCaller
|
|
|
+ */
|
|
|
+ public void setWaiterCaller(IWaiterCallable waiterCaller) {
|
|
|
+ this.waiterCaller = waiterCaller;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public <H extends Helper> H getHelper(Class<H> helperClass) {
|
|
|
+ return helperProvider.getHelper(helperClass);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 다음 화면(Fragment)으로 전달 할 데이터를 등록한다.
|
|
|
+ *
|
|
|
+ * @param packaging
|
|
|
+ */
|
|
|
+ public void setDeliveryPackaging(Object packaging) {
|
|
|
+ getHelper(DeliveryHelper.class).setPackaging(packaging);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 다음 화면(Fragment)으로 전달 할 데이터를 반환 @Nullable
|
|
|
+ *
|
|
|
+ * @param nameClass
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Nullable
|
|
|
+ public <T> T getDeliveryPackaging(Class<T> nameClass) {
|
|
|
+ return getHelper(DeliveryHelper.class).getPackaging(nameClass);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * DeliveryHelper clearPackagingInternal()
|
|
|
+ */
|
|
|
+ public void clearDeliveryPackaging() {
|
|
|
+ getHelper(DeliveryHelper.class).clearPackaging();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 이전 화면(상위)에서 되돌아온 결과 데이터 등록
|
|
|
+ *
|
|
|
+ * @param packaging
|
|
|
+ */
|
|
|
+ public void setResultPackaging(Object packaging) {
|
|
|
+ Log.e("APP# Model | setResultPackaging", "|" + " =============> " + packaging);
|
|
|
+ getHelper(DeliveryResultHelper.class).setPackaging(packaging);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 이전 화면(상위)에서 되돌아온 결과 데이터 반환
|
|
|
+ *
|
|
|
+ * @param nameClass
|
|
|
+ * @param <T>
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Nullable
|
|
|
+ public <T> T getResultPackaging(Class<T> nameClass) {
|
|
|
+ return getHelper(DeliveryResultHelper.class).getPackaging(nameClass);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 이전 화면(상위)에서 되돌아온 결과 데이터 clear
|
|
|
+ */
|
|
|
+ public void clearResultPackaging() {
|
|
|
+ getHelper(DeliveryResultHelper.class).clearPackaging();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 버킷 리스트 수를 파악한다.
|
|
|
+ *
|
|
|
+ * @param listener
|
|
|
+ */
|
|
|
+ public void loadMyBucketCount(IEventListener listener) {
|
|
|
+ disposableBucket = BucketListManager.getInstance().loadMyBucketList(
|
|
|
+ new BucketListRequestBean(1, 1000, ""),
|
|
|
+ new APIModuleListener<BucketListResultBean>(waiterCaller) {
|
|
|
+ @Override
|
|
|
+ public void onApiSuccess(BucketListResultBean resultBean) {
|
|
|
+ listener.onEvent(new Event.Builder(Event.RESULT).integer(BucketListManager.getInstance().getBucketCount()).build());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onApiError(String errorMessage, APIError error) {
|
|
|
+ listener.onEvent(new Event.Builder(Event.RESULT).integer(0).build());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 북마크 수를 파악
|
|
|
+ *
|
|
|
+ * @param listener
|
|
|
+ */
|
|
|
+ public void loadMyBookMarkCount(IEventListener listener) {
|
|
|
+ disposableBookMarkList = BookmarkManager.getInstance().loadMyBookmark(new PageRequestBean(), new APIModuleListener<BookmarkListResultBean>(waiterCaller) {
|
|
|
+ @Override
|
|
|
+ public void onApiSuccess(BookmarkListResultBean resultBean) {
|
|
|
+ listener.onEvent(new Event.Builder(Event.RESULT).integer(BookmarkManager.getInstance().getCountOfBookmark()).build());
|
|
|
}
|
|
|
- else {
|
|
|
- onApiError("", new APIError(APIError.ERROR_REASON));
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onApiError(String errorMessage, APIError error) {
|
|
|
+ listener.onEvent(new Event.Builder(Event.RESULT).integer(0).build());
|
|
|
}
|
|
|
- }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 최신 알림이 있는지 파악
|
|
|
+ *
|
|
|
+ * @param listener
|
|
|
+ */
|
|
|
+ public void loadNotiLatest(IEventListener listener) {
|
|
|
+ disposableNoti =
|
|
|
+ new APINoticeModule().call(new RequestBean(), new APIModuleListener<NoticeResultBean>(waiterCaller) {
|
|
|
+ @Override
|
|
|
+ public void onApiSuccess(NoticeResultBean resultBean) {
|
|
|
+ List<NoticeBean> noticeBeans = resultBean.getData();
|
|
|
+
|
|
|
+ if (null != noticeBeans && noticeBeans.size() > 0) {
|
|
|
+ // 마지막 시간과 비교해서 다르면 뉴 표시
|
|
|
+
|
|
|
+ Log.d("APP# Model | onApiSuccess, 369", "|" + noticeBeans.get(0).getOpeningDate());
|
|
|
+ if (SuperModel.getInstance().getPreferences().getNotiLatestTime().equals(noticeBeans.get(0).getOpeningDate())) {
|
|
|
+ // 새 알림 없음.
|
|
|
+ listener.onEvent(new Event.Builder(Event.SUCCESS).bool(false).build());
|
|
|
+ } else {
|
|
|
+ // 새 알림 있음.
|
|
|
+ listener.onEvent(new Event.Builder(Event.SUCCESS).bool(true).build());
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ onApiError("", new APIError(APIError.ERROR_REASON));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onApiError(String errorMessage, APIError error) {
|
|
|
+ listener.onEvent(new Event.Builder(Event.ERROR).bool(false).build());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 현 Screen ID 저장
|
|
|
+ *
|
|
|
+ * @param screenId
|
|
|
+ */
|
|
|
+ public void setScreenId(int screenId) {
|
|
|
+ this.screenId = screenId;
|
|
|
+ }
|
|
|
+
|
|
|
+ public int getScreenId() {
|
|
|
+ return screenId;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 현 screen id 를 다음 스크린으로 전달하기위해 담기
|
|
|
+ */
|
|
|
+ public void packScreenId() {
|
|
|
+ getHelper(ScreenIDDeliveryHelper.class).setPackaging(screenId);
|
|
|
+ Log.e("APP# Model | packScreenId", "|" + " deliver screen id ----> " + screenId);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 이전 Screen ID
|
|
|
+ *
|
|
|
+ * @param screenId
|
|
|
+ */
|
|
|
+ public void setPrevScreenId(int screenId) {
|
|
|
+ Log.e("APP# Model | setPrevScreenId", "|" + " received screen id <----- " + screenId);
|
|
|
+ this.prevScreenId = screenId;
|
|
|
+ }
|
|
|
+
|
|
|
+ public int getPrevScreenId() {
|
|
|
+ return prevScreenId;
|
|
|
+ }
|
|
|
+
|
|
|
+ /***********************************
|
|
|
+ * ILifeCycle
|
|
|
+ ***********************************/
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void createView() {
|
|
|
+ Log.w("APP# Model | createView", "| -------->> " + this.getClass().getSimpleName());
|
|
|
+ createViewInternal();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public final void start() {
|
|
|
+ Log.w("APP# Model | start", "| -------->> " + this.getClass().getSimpleName());
|
|
|
+ watchNetwork();
|
|
|
+ startInternal();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public final void resume() {
|
|
|
+ Log.w("APP# Model | resume", "| -------->> " + this.getClass().getSimpleName());
|
|
|
+ resumeInternal();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public final void pause() {
|
|
|
+ Log.i("APP# Model | pause", "| " + this.getClass().getSimpleName() + " <<--------");
|
|
|
+ pauseInternal();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public final void stop() {
|
|
|
+ Log.i("APP# Model | stop", "| " + this.getClass().getSimpleName() + " <<--------");
|
|
|
+ stopNetworkWatching();
|
|
|
|
|
|
- @Override
|
|
|
- public void onApiError(String errorMessage, APIError error) {
|
|
|
- listener.onEvent(new Event.Builder(Event.ERROR).bool(false).build());
|
|
|
- }
|
|
|
+ if (null != disposableBucket) {
|
|
|
+ disposableBucket.dispose();
|
|
|
+ disposableBucket = null;
|
|
|
}
|
|
|
- );
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 현 Screen ID 저장
|
|
|
- *
|
|
|
- * @param screenId
|
|
|
- */
|
|
|
- public void setScreenId(int screenId) {
|
|
|
- this.screenId = screenId;
|
|
|
- }
|
|
|
-
|
|
|
- public int getScreenId() {
|
|
|
- return screenId;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 현 screen id 를 다음 스크린으로 전달하기위해 담기
|
|
|
- */
|
|
|
- public void packScreenId() {
|
|
|
- getHelper(ScreenIDDeliveryHelper.class).setPackaging(screenId);
|
|
|
- Log.e("APP# Model | packScreenId", "|" + " deliver screen id ----> " + screenId);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 이전 Screen ID
|
|
|
- *
|
|
|
- * @param screenId
|
|
|
- */
|
|
|
- public void setPrevScreenId(int screenId) {
|
|
|
- Log.e("APP# Model | setPrevScreenId", "|" + " received screen id <----- " + screenId);
|
|
|
- this.prevScreenId = screenId;
|
|
|
- }
|
|
|
-
|
|
|
- public int getPrevScreenId() {
|
|
|
- return prevScreenId;
|
|
|
- }
|
|
|
-
|
|
|
- /***********************************
|
|
|
- * ILifeCycle
|
|
|
- ***********************************/
|
|
|
-
|
|
|
- @Override
|
|
|
- public void createView() {
|
|
|
- Log.w("APP# Model | createView", "| -------->> " + this.getClass().getSimpleName());
|
|
|
- createViewInternal();
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public final void start() {
|
|
|
- Log.w("APP# Model | start", "| -------->> " + this.getClass().getSimpleName());
|
|
|
- watchNetwork();
|
|
|
- startInternal();
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public final void resume() {
|
|
|
- Log.w("APP# Model | resume", "| -------->> " + this.getClass().getSimpleName());
|
|
|
- resumeInternal();
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public final void pause() {
|
|
|
- Log.i("APP# Model | pause", "| " + this.getClass().getSimpleName() + " <<--------");
|
|
|
- pauseInternal();
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public final void stop() {
|
|
|
- Log.i("APP# Model | stop", "| " + this.getClass().getSimpleName() + " <<--------");
|
|
|
- stopNetworkWatching();
|
|
|
-
|
|
|
- if (null != disposableBucket) {
|
|
|
- disposableBucket.dispose();
|
|
|
- disposableBucket = null;
|
|
|
- }
|
|
|
- if (null != disposableBookMarkList) {
|
|
|
- disposableBookMarkList.dispose();
|
|
|
- disposableBookMarkList = null;
|
|
|
- }
|
|
|
-
|
|
|
- stopInternal();
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void destroyView() {
|
|
|
- Log.i("APP# Model | destroyView", "| " + this.getClass().getSimpleName() + " <<--------");
|
|
|
- destroyViewInternal();
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * dispose
|
|
|
- * - Model 은 Activity 가 destroy 될 때 함께 destroy 된다.
|
|
|
- */
|
|
|
- @Override
|
|
|
- public final void destroy() {
|
|
|
- Log.i("APP# Model | destroy", "| model: " + this.getClass().getSimpleName() + "<<<<<<<<<<<<");
|
|
|
- destroyInternal();
|
|
|
- }
|
|
|
-
|
|
|
- protected abstract void createViewInternal();
|
|
|
-
|
|
|
- protected abstract void destroyInternal();
|
|
|
-
|
|
|
- protected abstract void destroyViewInternal();
|
|
|
-
|
|
|
- protected abstract void startInternal();
|
|
|
-
|
|
|
- protected abstract void stopInternal();
|
|
|
-
|
|
|
- protected abstract void resumeInternal();
|
|
|
-
|
|
|
- protected abstract void pauseInternal();
|
|
|
-
|
|
|
- @Override
|
|
|
- protected void onCleared() {
|
|
|
- super.onCleared();
|
|
|
-
|
|
|
- destroy();
|
|
|
- }
|
|
|
+ if (null != disposableBookMarkList) {
|
|
|
+ disposableBookMarkList.dispose();
|
|
|
+ disposableBookMarkList = null;
|
|
|
+ }
|
|
|
+
|
|
|
+ stopInternal();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void destroyView() {
|
|
|
+ Log.i("APP# Model | destroyView", "| " + this.getClass().getSimpleName() + " <<--------");
|
|
|
+ destroyViewInternal();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * dispose
|
|
|
+ * - Model 은 Activity 가 destroy 될 때 함께 destroy 된다.
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public final void destroy() {
|
|
|
+ Log.i("APP# Model | destroy", "| model: " + this.getClass().getSimpleName() + "<<<<<<<<<<<<");
|
|
|
+ destroyInternal();
|
|
|
+ }
|
|
|
+
|
|
|
+ protected abstract void createViewInternal();
|
|
|
+
|
|
|
+ protected abstract void destroyInternal();
|
|
|
+
|
|
|
+ protected abstract void destroyViewInternal();
|
|
|
+
|
|
|
+ protected abstract void startInternal();
|
|
|
+
|
|
|
+ protected abstract void stopInternal();
|
|
|
+
|
|
|
+ protected abstract void resumeInternal();
|
|
|
+
|
|
|
+ protected abstract void pauseInternal();
|
|
|
+
|
|
|
+ @Override
|
|
|
+ protected void onCleared() {
|
|
|
+ super.onCleared();
|
|
|
+
|
|
|
+ destroy();
|
|
|
+ }
|
|
|
}
|