Skip to content

Instantly share code, notes, and snippets.

@sergdort
Last active March 26, 2017 18:39
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/e86f563614803bab39fc3f35f1888bad to your computer and use it in GitHub Desktop.
Save sergdort/e86f563614803bab39fc3f35f1888bad to your computer and use it in GitHub Desktop.
class HeroListViewModel {
let mainTableItems: Driver<[HeroCellSection]>
let searchTableItems: Driver<[HeroCellSection]>
let dismissTrigger: Driver<Void>
init(uiTriggers: (searchQuery: Observable<String>,
nextPageTrigger: Observable<Void>,
searchNextPageTrigger: Observable<Void>,
dismissTrigger: Driver<Void>), api: HeroAPI) {
searchTableItems = uiTriggers.searchQuery
.filter { !$0.isEmpty }//1
.throttle(0.3, scheduler: MainScheduler.instance)//2
.flatMapLatest { //3
return api.searchItems($0,
batch: Batch.initial,
endPoint: EndPoint.Characters,
nextBatchTrigger: uiTriggers.searchNextPageTrigger) // 6
.catchError { _ in
return Observable.empty()
}
}
.map { //4
return $0.map(HeroCellData.init)
}
.map {//5
return [HeroCellSection(items: $0)]
}
.asDriver(onErrorJustReturn: [])
....
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment