Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2019
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.98 KB | None | 0 0
  1. extension MoviesCollectionView{
  2.  
  3. func setupRx(){
  4. setupRxCollectionView()
  5. setupRxDrivers()
  6. }
  7.  
  8. func setupRxCollectionView(){
  9.  
  10. let dataSubject = PublishSubject<[MoviesSection]>()
  11. let dataSource = RxCollectionViewSectionedAnimatedDataSource<MoviesSection>(
  12. configureCell:{ dataSource, tableView, indexPath, item in
  13. let cell = tableView.dequeueReusableCell(withReuseIdentifier: self.cellName(), for: indexPath) as! MovieViewCell
  14.  
  15. cell.setupWithMovie(item)
  16.  
  17. return cell
  18. })
  19.  
  20. dataSource.canMoveItemAtIndexPath = { dataSource, indexPath in
  21. return true
  22. }
  23. dataSubject
  24. .bind(to: collectionView.rx.items(dataSource: dataSource))
  25. .disposed(by: disposeBag)
  26.  
  27. self.dataSubject = dataSubject
  28. self.dataSource = dataSource
  29.  
  30. }
  31.  
  32. func setupRxDrivers(){
  33.  
  34. movies
  35. .driver
  36. .throttle(.milliseconds(500), latest: true)
  37. .drive(onNext:{ [weak self] movies in
  38.  
  39. guard let this = self else { return }
  40.  
  41. this.captureSearchString()
  42. this.isLoading.accept(false)
  43. this.dataSubject.onNext(this.dataFiltered())
  44.  
  45. }).disposed(by: disposeBag)
  46.  
  47. isLoading
  48. .drive(refreshControl.rx.isRefreshing)
  49. .disposed(by: disposeBag)
  50.  
  51.  
  52. currentPage
  53. .drive(onNext:{ [weak self] currentPage in
  54. self?.loadMovies()
  55. })
  56. .disposed(by: disposeBag)
  57.  
  58. searchString
  59. .drive( onNext:{ [weak self] searchString in
  60. guard let this = self else { return }
  61.  
  62. this.dataSubject.onNext(this.dataFiltered())
  63. })
  64. .disposed(by: disposeBag)
  65.  
  66. }
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement