From 59f17b7ae69635adfd2a6b4c510270137ef466d6 Mon Sep 17 00:00:00 2001
From: Janne Koschinski <janne@kuschku.de>
Date: Thu, 3 May 2018 00:20:38 +0200
Subject: [PATCH] Unhide buffers on activity

Signed-off-by: Janne Koschinski <janne@kuschku.de>
---
 .../de/kuschku/libquassel/quassel/syncables/BufferSyncer.kt  | 5 +++++
 .../kuschku/libquassel/quassel/syncables/BufferViewConfig.kt | 5 ++++-
 .../libquassel/quassel/syncables/BufferViewManager.kt        | 4 ++--
 3 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/BufferSyncer.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/BufferSyncer.kt
index c819cb2ca..ec8eadcc9 100644
--- a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/BufferSyncer.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/BufferSyncer.kt
@@ -222,6 +222,11 @@ class BufferSyncer constructor(
   override fun setBufferActivity(buffer: BufferId, activity: Int) {
     val flags = Message_Types.of<Message_Type>(activity)
     super.setBufferActivity(buffer, activity)
+    if (activity != 0) {
+      bufferInfo(buffer)?.let {
+        session.bufferViewManager?.handleBuffer(it, this, true)
+      }
+    }
     _bufferActivities[buffer] = flags
     live_bufferActivities.onNext(Unit)
   }
diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/BufferViewConfig.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/BufferViewConfig.kt
index c15b4273c..7b66da97d 100644
--- a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/BufferViewConfig.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/BufferViewConfig.kt
@@ -337,13 +337,16 @@ class BufferViewConfig constructor(
     }
   }
 
-  fun handleBuffer(info: BufferInfo, bufferSyncer: BufferSyncer) {
+  fun handleBuffer(info: BufferInfo, bufferSyncer: BufferSyncer, unhide: Boolean = false) {
     if (_addNewBuffersAutomatically &&
         !_buffers.contains(info.bufferId) &&
         !_temporarilyRemovedBuffers.contains(info.bufferId) &&
         !_removedBuffers.contains(info.bufferId) &&
         !info.type.hasFlag(Buffer_Type.StatusBuffer)) {
       insertBufferSorted(info, bufferSyncer)
+    } else if (unhide && !_buffers.contains(info.bufferId) &&
+               _temporarilyRemovedBuffers.contains(info.bufferId)) {
+      insertBufferSorted(info, bufferSyncer)
     }
   }
 
diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/BufferViewManager.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/BufferViewManager.kt
index 1b9097aaa..12e475f26 100644
--- a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/BufferViewManager.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/BufferViewManager.kt
@@ -82,9 +82,9 @@ class BufferViewManager constructor(
   private val live_bufferViewConfigs: BehaviorSubject<Set<Int>> = BehaviorSubject.createDefault<Set<Int>>(
     emptySet())
 
-  fun handleBuffer(info: BufferInfo, bufferSyncer: BufferSyncer) {
+  fun handleBuffer(info: BufferInfo, bufferSyncer: BufferSyncer, unhide: Boolean = false) {
     for (bufferViewConfig in bufferViewConfigs()) {
-      bufferViewConfig.handleBuffer(info, bufferSyncer)
+      bufferViewConfig.handleBuffer(info, bufferSyncer, unhide)
     }
   }
 }
-- 
GitLab