
commonMain.me.aartikov.replica.paged.PagedData.kt Maven / Gradle / Ivy
package me.aartikov.replica.paged
data class PagedData>(
val pages: List,
val items: List
) {
constructor(
pages: List
,
idExtractor: ((I) -> Any)? = null
) : this(pages, getItems(pages, idExtractor))
val hasNextPage get() = pages.lastOrNull()?.hasNextPage ?: false
val hasPreviousPage get() = pages.firstOrNull()?.hasPreviousPage ?: false
}
private fun > getItems(pages: List
, idExtractor: ((I) -> Any)? = null): List {
val items = pages.asSequence().flatMap { it.items }
return if (idExtractor == null) {
items.toList()
} else {
items.distinctBy { idExtractor(it) }.toList()
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy