Skip to content

Instantly share code, notes, and snippets.

@luks91
Created October 16, 2017 00:43
Show Gist options
  • Save luks91/4f41efafef517234acc4e3c0d795e1c4 to your computer and use it in GitHub Desktop.
Save luks91/4f41efafef517234acc4e3c0d795e1c4 to your computer and use it in GitHub Desktop.
fun <TData> pagedDataOf(nextPageStartingFrom: (start: Int) -> Flowable<PagedResponse<TData>>): Flowable<List<TData>> {
return Flowable.generate<List<TData>, Int>(
Callable<Int> { 0 },
BiFunction<Int, Emitter<List<TData>>, Int> { index, emitter ->
nextPageStartingFrom(index)
.doOnNext { page ->
if (!page.values.isEmpty()) {
emitter.onNext(page.values)
}
if (page.isLastPage) {
emitter.onComplete()
}
}
.map { data -> data.nextPageStart }
.blockingFirst()
})
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment