From d05012d9919223baf95b2701811adb61d6c73085 Mon Sep 17 00:00:00 2001 From: Janne Koschinski <janne@kuschku.de> Date: Sat, 5 May 2018 16:53:26 +0200 Subject: [PATCH] But maybe this will do it for #64? Signed-off-by: Janne Koschinski <janne@kuschku.de> --- .../quasseldroid/ui/chat/messages/MessageListFragment.kt | 6 ++++-- .../de/kuschku/quasseldroid/persistence/QuasselDatabase.kt | 3 +++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt index d0e6f0ba8..35a0dd92d 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt @@ -325,8 +325,9 @@ class MessageListFragment : ServiceBoundFragment() { if (it?.orNull() == ConnectionState.CONNECTED) { runInBackgroundDelayed(16) { viewModel.buffer { bufferId -> + val filtered = database.filtered().get(accountId, bufferId) // Try loading messages when switching to isEmpty buffer - if (database.message().bufferSize(bufferId) == 0) { + if (!database.message().hasVisibleMessages(bufferId, filtered ?: 0)) { if (bufferId > 0 && bufferId != Int.MAX_VALUE) { loadMore(initial = true) } @@ -438,7 +439,8 @@ class MessageListFragment : ServiceBoundFragment() { bufferSyncer.requestSetMarkerLine(previous, lastMessageId) } // Try loading messages when switching to isEmpty buffer - if (database.message().bufferSize(current) == 0) { + val filtered = database.filtered().get(accountId, current) + if (!database.message().hasVisibleMessages(current, filtered ?: 0)) { if (current > 0 && current != Int.MAX_VALUE) { loadMore(initial = true) } diff --git a/persistence/src/main/java/de/kuschku/quasseldroid/persistence/QuasselDatabase.kt b/persistence/src/main/java/de/kuschku/quasseldroid/persistence/QuasselDatabase.kt index 7f4f76c22..7a6433b8a 100644 --- a/persistence/src/main/java/de/kuschku/quasseldroid/persistence/QuasselDatabase.kt +++ b/persistence/src/main/java/de/kuschku/quasseldroid/persistence/QuasselDatabase.kt @@ -111,6 +111,9 @@ abstract class QuasselDatabase : RoomDatabase() { @Query("SELECT * FROM message WHERE bufferId = :bufferId ORDER BY messageId ASC LIMIT 1") fun findFirstByBufferId(bufferId: Int): MessageData? + @Query("SELECT EXISTS(SELECT 1 FROM message WHERE bufferId = :bufferId AND type & ~ :type > 0 AND ignored = 0)") + fun hasVisibleMessages(bufferId: Int, type: Int): Boolean + @Insert(onConflict = OnConflictStrategy.REPLACE) fun save(vararg entities: MessageData) -- GitLab