Skip to content
Snippets Groups Projects
Verified Commit 22caba2b authored by Janne Mareike Koschinski's avatar Janne Mareike Koschinski
Browse files

Attempt at fixing #64

parent 932604ea
No related branches found
No related tags found
No related merge requests found
...@@ -32,7 +32,7 @@ class BacklogRequester( ...@@ -32,7 +32,7 @@ class BacklogRequester(
) { ) {
fun loadMore(accountId: Long, buffer: BufferId, amount: Int, pageSize: Int, fun loadMore(accountId: Long, buffer: BufferId, amount: Int, pageSize: Int,
lastMessageId: MsgId? = null, lastMessageId: MsgId? = null,
untilVisible: Boolean = false, untilAllVisible: Boolean = false,
finishCallback: () -> Unit) { finishCallback: () -> Unit) {
var missing = amount var missing = amount
viewModel.session.value?.orNull()?.backlogManager?.let { viewModel.session.value?.orNull()?.backlogManager?.let {
...@@ -43,14 +43,22 @@ class BacklogRequester( ...@@ -43,14 +43,22 @@ class BacklogRequester(
)?.messageId ?: -1, )?.messageId ?: -1,
limit = amount limit = amount
) { ) {
if (untilVisible && it.isNotEmpty()) { if (it.isNotEmpty()) {
val filtered = database.filtered().get(accountId, buffer) ?: 0 val filtered = database.filtered().get(accountId, buffer) ?: 0
missing -= it.count { missing -= it.count {
(it.type.value and filtered.inv()) != 0 (it.type.value and filtered.inv()) != 0
} }
val hasLoadedAll = missing == 0
val hasLoadedAny = missing < amount
if (untilAllVisible && !hasLoadedAll || !untilAllVisible && !hasLoadedAny) {
val messageId = it.map(Message::messageId).min() val messageId = it.map(Message::messageId).min()
if (missing > 0) { loadMore(accountId,
loadMore(accountId, buffer, missing, pageSize, messageId, untilVisible, finishCallback) buffer,
missing,
pageSize,
messageId,
untilAllVisible,
finishCallback)
} else { } else {
finishCallback() finishCallback()
} }
......
...@@ -470,7 +470,7 @@ class MessageListFragment : ServiceBoundFragment() { ...@@ -470,7 +470,7 @@ class MessageListFragment : ServiceBoundFragment() {
pageSize = backlogSettings.pageSize, pageSize = backlogSettings.pageSize,
lastMessageId = lastMessageId lastMessageId = lastMessageId
?: database.message().findFirstByBufferId(bufferId)?.messageId ?: -1, ?: database.message().findFirstByBufferId(bufferId)?.messageId ?: -1,
untilVisible = initial untilAllVisible = initial
) { ) {
activity?.runOnUiThread { activity?.runOnUiThread {
swipeRefreshLayout.isRefreshing = false swipeRefreshLayout.isRefreshing = false
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment