From 7ca03c7dd8bb661f2bdb7aeaf59754333772ef83 Mon Sep 17 00:00:00 2001
From: Janne Koschinski <janne@kuschku.de>
Date: Tue, 12 Jun 2018 22:35:56 +0200
Subject: [PATCH] Fix duplicate notifications

Only send notifications after a timeout equal to 2x the current latency
---
 .../service/QuasselNotificationBackend.kt            | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/app/src/main/java/de/kuschku/quasseldroid/service/QuasselNotificationBackend.kt b/app/src/main/java/de/kuschku/quasseldroid/service/QuasselNotificationBackend.kt
index eefcec978..23bf961f9 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/service/QuasselNotificationBackend.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/service/QuasselNotificationBackend.kt
@@ -50,6 +50,8 @@ import de.kuschku.quasseldroid.util.helper.styledAttributes
 import de.kuschku.quasseldroid.util.irc.format.ContentFormatter
 import de.kuschku.quasseldroid.util.ui.TextDrawable
 import de.kuschku.quasseldroid.viewmodel.EditorViewModel
+import java.util.concurrent.Executors
+import java.util.concurrent.TimeUnit
 import javax.inject.Inject
 
 class QuasselNotificationBackend @Inject constructor(
@@ -61,6 +63,7 @@ class QuasselNotificationBackend @Inject constructor(
   private var notificationSettings: NotificationSettings
   private var appearanceSettings: AppearanceSettings
   private var messageSettings: MessageSettings
+  private val executor = Executors.newSingleThreadScheduledExecutor()
 
   @ColorInt
   private var selfColor: Int
@@ -220,7 +223,14 @@ class QuasselNotificationBackend @Inject constructor(
       )
     }
     database.notifications().save(*results.toTypedArray())
-    results.map(QuasselDatabase.NotificationData::bufferId).distinct().forEach(this::showNotification)
+    executor.schedule(
+      {
+        results.map(QuasselDatabase.NotificationData::bufferId).distinct()
+          .forEach(this::showNotification)
+      },
+      session.lag.value * 2,
+      TimeUnit.MILLISECONDS
+    )
   }
 
   @Synchronized
-- 
GitLab