Fix pagination

pull/540/head v6.2.4
Koitharu 3 years ago
parent 1b0fed5c56
commit 24f1546019
Signed by: Koitharu
GPG Key ID: 676DEE768C17A9D7

@ -16,8 +16,8 @@ android {
applicationId 'org.koitharu.kotatsu' applicationId 'org.koitharu.kotatsu'
minSdk = 21 minSdk = 21
targetSdk = 34 targetSdk = 34
versionCode = 590 versionCode = 591
versionName = '6.2.3' versionName = '6.2.4'
generatedDensities = [] generatedDensities = []
testInstrumentationRunner "org.koitharu.kotatsu.HiltTestRunner" testInstrumentationRunner "org.koitharu.kotatsu.HiltTestRunner"
ksp { ksp {
@ -82,7 +82,7 @@ afterEvaluate {
} }
dependencies { dependencies {
//noinspection GradleDependency //noinspection GradleDependency
implementation('com.github.KotatsuApp:kotatsu-parsers:6bf0ae92e4') { implementation('com.github.KotatsuApp:kotatsu-parsers:af1aca8725') {
exclude group: 'org.json', module: 'json' exclude group: 'org.json', module: 'json'
} }
@ -137,8 +137,8 @@ dependencies {
implementation 'com.github.solkin:disk-lru-cache:1.4' implementation 'com.github.solkin:disk-lru-cache:1.4'
implementation 'io.noties.markwon:core:4.6.2' implementation 'io.noties.markwon:core:4.6.2'
implementation 'ch.acra:acra-http:5.11.2' implementation 'ch.acra:acra-http:5.11.3'
implementation 'ch.acra:acra-dialog:5.11.2' implementation 'ch.acra:acra-dialog:5.11.3'
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.12' debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.12'

@ -12,11 +12,11 @@ import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.catch import kotlinx.coroutines.flow.catch
import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.debounce import kotlinx.coroutines.flow.debounce
import kotlinx.coroutines.flow.getAndUpdate
import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.flow.stateIn
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.plus import kotlinx.coroutines.plus
import org.koitharu.kotatsu.R import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.core.model.distinctById import org.koitharu.kotatsu.core.model.distinctById
@ -134,15 +134,17 @@ open class RemoteListViewModel @Inject constructor(
sortOrder = filterState.sortOrder, sortOrder = filterState.sortOrder,
tags = filterState.tags, tags = filterState.tags,
) )
mangaList.update { oldList -> val oldList = mangaList.getAndUpdate { oldList ->
if (!append || oldList.isNullOrEmpty()) { if (!append || oldList.isNullOrEmpty()) {
list list
} else { } else {
oldList + list oldList + list
} }
} }.orEmpty()
if (append) { hasNextPage.value = if (append) {
hasNextPage.value = list.isNotEmpty() list.isNotEmpty()
} else {
list.size > oldList.size || hasNextPage.value
} }
} catch (e: CancellationException) { } catch (e: CancellationException) {
throw e throw e
@ -152,6 +154,7 @@ open class RemoteListViewModel @Inject constructor(
if (!mangaList.value.isNullOrEmpty()) { if (!mangaList.value.isNullOrEmpty()) {
errorEvent.call(e) errorEvent.call(e)
} }
hasNextPage.value = false
} }
}.also { loadingJob = it } }.also { loadingJob = it }
} }

Loading…
Cancel
Save