From add998488307db3f616e61b443531e21d292fbf3 Mon Sep 17 00:00:00 2001 From: oakkitten Date: Fri, 23 Feb 2024 13:21:43 +0000 Subject: [PATCH] Handle `_buffer_cleared` Fixes some of #577 --- .../com/ubergeek42/WeechatAndroid/relay/Buffer.kt | 11 +++++++++-- .../com/ubergeek42/WeechatAndroid/relay/BufferList.kt | 6 ++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/ubergeek42/WeechatAndroid/relay/Buffer.kt b/app/src/main/java/com/ubergeek42/WeechatAndroid/relay/Buffer.kt index e01e2a9f..21c7cebf 100644 --- a/app/src/main/java/com/ubergeek42/WeechatAndroid/relay/Buffer.kt +++ b/app/src/main/java/com/ubergeek42/WeechatAndroid/relay/Buffer.kt @@ -17,7 +17,6 @@ import com.ubergeek42.WeechatAndroid.utils.updatable import com.ubergeek42.cats.Cat import com.ubergeek42.cats.Kitty import com.ubergeek42.cats.Root -import java.util.* class Buffer @WorkerThread constructor( @JvmField val pointer: Long, @@ -209,7 +208,7 @@ class Buffer @WorkerThread constructor( /////////////////////////////////////////////////////////////// stuff called by message handlers //////////////////////////////////////////////////////////////////////////////////////////////// - @WorkerThread @Synchronized fun replaceLines(newLines: Collection) { + @WorkerThread fun replaceLines(newLines: Collection) { if (isOpen) { newLines.forEach { it.ensureSpannable() } } @@ -366,6 +365,14 @@ class Buffer @WorkerThread constructor( bufferEyes.forEach { it.onLinesListed() } } + @WorkerThread fun onLinesCleared() { + synchronized(this) { + lines = Lines().apply { status = Lines.Status.EverythingFetched } + resetUnreadsAndHighlights() + } + bufferEyes.forEach { it.onLinesListed() } + } + @WorkerThread fun onBufferClosed() { synchronized(this) { unreads = 0 diff --git a/app/src/main/java/com/ubergeek42/WeechatAndroid/relay/BufferList.kt b/app/src/main/java/com/ubergeek42/WeechatAndroid/relay/BufferList.kt index 44881f96..0d0f17c9 100644 --- a/app/src/main/java/com/ubergeek42/WeechatAndroid/relay/BufferList.kt +++ b/app/src/main/java/com/ubergeek42/WeechatAndroid/relay/BufferList.kt @@ -388,6 +388,12 @@ object BufferList { } } + add("_buffer_cleared") { obj, _ -> + obj.forEachExistingBuffer { _, buffer -> + buffer.onLinesCleared() + } + } + return handlers }