Переглянути джерело

[메뉴][New] 노티 알림 누락 될 수 있는 경우 수정
- dispatch 이후 noti data 로딩이 완료되면 누락됨

hyodong.min 6 роки тому
батько
коміт
374456e711

+ 8 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/activity/AllMenuDriver.java

@@ -43,6 +43,7 @@ public class AllMenuDriver implements PushMessageBroker.IPushMessageListener, ID
   private IEventListener listener;
   private NavigationBar navigationBar;
   private boolean hasNewNoti = false;
+  private boolean isDispatched = false;
 
   public AllMenuDriver(Context context, ConstraintLayout drawerView, IEventListener listener) {
     this.context = context;
@@ -135,6 +136,7 @@ public class AllMenuDriver implements PushMessageBroker.IPushMessageListener, ID
 
   private void dispatchMessage() {
     if (hasUnreadMessage() || hasNewNoti()) {
+      isDispatched = true;
       navigationBar.setNotiMarker(true, true);
     }
   }
@@ -147,6 +149,7 @@ public class AllMenuDriver implements PushMessageBroker.IPushMessageListener, ID
   }
 
   private void dispatchMessageInternal() {
+    disposeMessageInternal();
     disposable = Completable.timer(400, TimeUnit.MILLISECONDS, AndroidSchedulers.mainThread())
       .subscribe(this::dispatchMessage);
   }
@@ -164,6 +167,10 @@ public class AllMenuDriver implements PushMessageBroker.IPushMessageListener, ID
    ***********************************/
   public void updateNotiMarker(boolean hasNewNoti) {
     this.hasNewNoti = hasNewNoti;
+    if (false == isDispatched && hasNewNoti()) {
+      // 아직 발송안하고 새 알림이 있을 경우
+      dispatchMessageInternal();
+    }
   }
 
   /***********************************
@@ -201,5 +208,6 @@ public class AllMenuDriver implements PushMessageBroker.IPushMessageListener, ID
   public void onDrawerCloseEnd() {
     navigationBar.setNotiMarker(false, false);
     hasNewNoti = false;
+    isDispatched = false;
   }
 }