29 lines
685 B
Kotlin
29 lines
685 B
Kotlin
package dev.inmo.micro_utils.pagination
|
|
|
|
inline fun doWithPagination(
|
|
startPagination: Pagination = FirstPagePagination(),
|
|
requestMaker: (pagination: Pagination) -> Pagination?
|
|
) = requestMaker(startPagination).let {
|
|
var pagination = it
|
|
while (pagination != null) {
|
|
pagination = requestMaker(pagination)
|
|
}
|
|
}
|
|
|
|
@Suppress("NOTHING_TO_INLINE")
|
|
inline fun PaginationResult<*>.nextPageIfNotEmpty() = if (results.isNotEmpty()) {
|
|
SimplePagination(
|
|
page + 1,
|
|
size
|
|
)
|
|
} else {
|
|
null
|
|
}
|
|
|
|
@Suppress("NOTHING_TO_INLINE")
|
|
inline fun PaginationResult<*>.thisPageIfNotEmpty(): Pagination? = if (results.isNotEmpty()) {
|
|
this
|
|
} else {
|
|
null
|
|
}
|