|
|
@@ -10,10 +10,13 @@ import android.widget.TextView;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
|
|
|
|
+import io.reactivex.Completable;
|
|
|
+import io.reactivex.android.schedulers.AndroidSchedulers;
|
|
|
+import io.reactivex.disposables.Disposable;
|
|
|
import kr.co.zumo.app.R;
|
|
|
import kr.co.zumo.app.lifeplus.helper.NavigationBar;
|
|
|
-import kr.co.zumo.app.lifeplus.model.SuperModel;
|
|
|
import kr.co.zumo.app.lifeplus.push.PushMessageBroker;
|
|
|
import kr.co.zumo.app.lifeplus.supervisor.PushMessageManager;
|
|
|
import kr.co.zumo.app.lifeplus.util.ResourceUtil;
|
|
|
@@ -33,6 +36,7 @@ import kr.co.zumo.app.lifeplus.view.IEventListener;
|
|
|
public class AllMenuDriver implements PushMessageBroker.IPushMessageListener, IDrawerEvent {
|
|
|
|
|
|
private PushMessageManager pushMessageManager;
|
|
|
+ private Disposable disposable;
|
|
|
|
|
|
private Context context;
|
|
|
private ConstraintLayout drawerView;
|
|
|
@@ -131,21 +135,35 @@ public class AllMenuDriver implements PushMessageBroker.IPushMessageListener, ID
|
|
|
}
|
|
|
|
|
|
private void dispatchMessage() {
|
|
|
- if (canDisplayMarker()) {
|
|
|
+ if (hasUnreadMessage()) {
|
|
|
navigationBar.setNotiMarker(true, true);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private boolean canDisplayMarker() {
|
|
|
- return (null != pushMessageManager && pushMessageManager.hasMessages() && pushMessageManager.isUnread()) || (SuperModel.getInstance().getPreferences().isAppFirstOpened());
|
|
|
+ private void disposeMessageInternal() {
|
|
|
+ if (null != disposable) {
|
|
|
+ disposable.dispose();
|
|
|
+ disposable = null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void dispatchMessageInternal() {
|
|
|
+ disposable = Completable.timer(400, TimeUnit.MILLISECONDS, AndroidSchedulers.mainThread())
|
|
|
+ .subscribe(this::dispatchMessage);
|
|
|
+ }
|
|
|
+
|
|
|
+ private boolean hasUnreadMessage() {
|
|
|
+ return (null != pushMessageManager && pushMessageManager.hasMessages() && pushMessageManager.isUnread());
|
|
|
}
|
|
|
|
|
|
/***********************************
|
|
|
* public
|
|
|
***********************************/
|
|
|
@Deprecated
|
|
|
- public void updateNoti() {
|
|
|
- dispatchMessage();
|
|
|
+ public void updateNotiMarker(boolean hasNewNoti) {
|
|
|
+ if (hasNewNoti) {
|
|
|
+ navigationBar.setNotiMarker(true, true);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/***********************************
|
|
|
@@ -170,12 +188,13 @@ public class AllMenuDriver implements PushMessageBroker.IPushMessageListener, ID
|
|
|
public void onDrawerOpenEnd() {
|
|
|
pushMessageManager = PushMessageManager.getStoredManager();
|
|
|
PushMessageBroker.getInstance().registerObserver(this);
|
|
|
- new Handler(Looper.getMainLooper()).postDelayed(this::dispatchMessage, 400);
|
|
|
+ dispatchMessageInternal();
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void onDrawerCloseStart() {
|
|
|
PushMessageBroker.getInstance().unregisterObserver(this);
|
|
|
+ disposeMessageInternal();
|
|
|
}
|
|
|
|
|
|
@Override
|