From 22caba2b1ff1b985c048719e4ee14c56c6e02506 Mon Sep 17 00:00:00 2001 From: Janne Koschinski <janne@kuschku.de> Date: Fri, 4 May 2018 18:33:50 +0200 Subject: [PATCH] Attempt at fixing #64 Signed-off-by: Janne Koschinski <janne@kuschku.de> --- .../quasseldroid/service/BacklogRequester.kt | 18 +++++++++++++----- .../ui/chat/messages/MessageListFragment.kt | 2 +- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/de/kuschku/quasseldroid/service/BacklogRequester.kt b/app/src/main/java/de/kuschku/quasseldroid/service/BacklogRequester.kt index 7ee4ddaa9..d044c3e88 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/service/BacklogRequester.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/service/BacklogRequester.kt @@ -32,7 +32,7 @@ class BacklogRequester( ) { fun loadMore(accountId: Long, buffer: BufferId, amount: Int, pageSize: Int, lastMessageId: MsgId? = null, - untilVisible: Boolean = false, + untilAllVisible: Boolean = false, finishCallback: () -> Unit) { var missing = amount viewModel.session.value?.orNull()?.backlogManager?.let { @@ -43,14 +43,22 @@ class BacklogRequester( )?.messageId ?: -1, limit = amount ) { - if (untilVisible && it.isNotEmpty()) { + if (it.isNotEmpty()) { val filtered = database.filtered().get(accountId, buffer) ?: 0 missing -= it.count { (it.type.value and filtered.inv()) != 0 } - val messageId = it.map(Message::messageId).min() - if (missing > 0) { - loadMore(accountId, buffer, missing, pageSize, messageId, untilVisible, finishCallback) + val hasLoadedAll = missing == 0 + val hasLoadedAny = missing < amount + if (untilAllVisible && !hasLoadedAll || !untilAllVisible && !hasLoadedAny) { + val messageId = it.map(Message::messageId).min() + loadMore(accountId, + buffer, + missing, + pageSize, + messageId, + untilAllVisible, + finishCallback) } else { finishCallback() } 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 7603078bf..d0e6f0ba8 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 @@ -470,7 +470,7 @@ class MessageListFragment : ServiceBoundFragment() { pageSize = backlogSettings.pageSize, lastMessageId = lastMessageId ?: database.message().findFirstByBufferId(bufferId)?.messageId ?: -1, - untilVisible = initial + untilAllVisible = initial ) { activity?.runOnUiThread { swipeRefreshLayout.isRefreshing = false -- GitLab