All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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() } }