Skip to content

Instantly share code, notes, and snippets.

@sergdort
Created June 11, 2016 14:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sergdort/d1a5c385ef2ac71472fd7ad92e9bd10a to your computer and use it in GitHub Desktop.
Save sergdort/d1a5c385ef2ac71472fd7ad92e9bd10a to your computer and use it in GitHub Desktop.
....
func paginateItems(batch: Batch = Batch.initial,
endPoint: EndPoint,
nextBatchTrigger: Observable<Void>) -> Observable<Page<[Hero]>> {
let params = paramsProvider.pagingListParamsForBatch(batch)
return httpClient
.request(.GET, endPoint,
parameters: paramsProvider.defaultParams + params,
encoding: .URL,
headers: nil)
.observeOn(DefaultHeroAPI.decodeScheduler)
.map(PagingParser<Hero>.parse)
.paginate(nextBatchTrigger,
hasNextPage: { (page) -> Bool in
return page.batch.next().hasNextPage
}) { [weak self] (page) -> Observable<Page<[Hero]>> in
return self?.paginateItems(page.batch.next(),
endPoint: endPoint,
nextBatchTrigger: nextBatchTrigger) ?? Observable.empty()
}
}
....
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment